Integrations
Settings → Integrations connects VBRI Group CRM to the outside world: social accounts, email, DNS providers, TeamFlow, Meta lead capture and reverse sync, and your own website.
Admins only.
Connected Accounts
A card grid of social connections — Meta (Facebook & Instagram), X, and LinkedIn — each showing Connected / Not connected / Setup needed. Click a card to open its sheet and use the one-click Continue with … OAuth login; no manual token pasting. Connected cards show the account name and token expiry, with Reconnect and Disconnect buttons.
The Meta connection is the one the Lead Chains wizard and the Conversions API pixel picker reuse.
Email (SMTP)
Send drip campaigns, workflow emails, and Copilot mail through your own mail server:
- Tick Use custom SMTP for outbound email.
- Fill in host, port, username, password, From address, and TLS/SSL.
- Set the Daily send limit (protects your sender reputation) and click Save SMTP Settings; Send test email delivers to your own address and logs in the Inbox.
When disabled, mail goes through the built-in provider instead. This card also holds the overdue-task daily digest toggle and the Inbound email webhook: generate (or rotate) a key and point your provider's inbound hook at the shown URL so replies land in the Inbox — linked to the sender's lead, logged on their timeline, and stopping their active drips.
DNS Providers
Connect Cloudflare, GoDaddy, or Hostinger with an API token (GoDaddy needs key + secret) and a label. Landing pages use these connections to point a custom domain at the CRM automatically instead of you editing DNS records by hand. Removing a connection keeps already-connected domains working, but they can't be re-synced.
TeamFlow
When a deal is marked won, a delivery project is created in TeamFlow with the client's details. Enter the TeamFlow URL and its integration API key, tick the enable checkbox, and Test connection. See the Projects guide.
Meta Instant Leads
The org-level webhook for Facebook & Instagram Lead Ads (the manual alternative to a Lead Chain's OAuth connection). The card gives you the Callback URL to paste into the Meta App Dashboard → Webhooks, a Verify Token generator, and fields for the Facebook Page ID, App Secret, and a Page Access Token with leads_retrieval permission. Secrets are stored encrypted and shown masked after saving (••••xxxx); enter a new value to replace one. The setup steps are printed on the card.
Meta Reverse Sync (Conversions API)
Report lead progress back to Meta so your ads optimize for leads that actually convert, not just form fills.
Setup
- Enable the card's toggle.
- Connect your Business Manager Account — the picker lists the Business Managers on your connected Facebook account (no separate auth step).
- Choose your Pixel — a picker with Owned Pixels and Client Pixels tabs, so agencies can send events to a client's pixel shared with their Business Manager.
- Optionally paste a Conversions API Access Token — only needed for a dedicated System User token; otherwise the connected Facebook account is used.
What gets sent
- When a lead moves to a stage — set the Meta event name to send for each of your pipeline's stages (every stage except the first, which is a lead's starting point and has no event of its own), e.g. "Appointment" for a Qualified-equivalent stage. Leave a stage blank to not send an event for it. Stages come from your own Lead Stages setup (Settings → Lead Stages), so this list reflects however you've named and ordered your pipeline — not a fixed set.
- When a deal closes won — its own toggle and event name (default Purchase); the deal's value is included.
Only leads captured from Meta Lead Ads are eligible — Meta needs the original leadgen id to attribute the event. Each event sends whichever match fields the lead has (email, phone, name, city, zip, country), all hashed with SHA-256. Enable Conversion Leads optimization in your Meta campaign to use these signals.
Privacy note (shown on the card): this shares SHA-256 hashes of customer contact details with Meta — confirm your privacy policy covers it before enabling.
Note: the pixel's name is display-only and not persisted — after a reload the field shows just the pixel id until you reopen the picker.
Website Leads
Capture form submissions from any website via a simple API call:
- Enable the toggle and click the generate button to create an API Key. Copy it immediately — it's shown only once; after saving, only the last 4 characters display. Regenerating invalidates the old key on save.
- Copy the ready-made snippet into your website's form handler — it POSTs
name(required) plus optionalemail,phone,message, andsourceto the public lead endpoint with the key in thex-api-keyheader. Pick the language with the toggle above the code — JavaScript, React, PHP, Angular or cURL — and the copy button copies whichever one is showing. Each example already contains your organisation's real custom-field keys. The cURL version uses sample values, so you can paste it into a terminal to check the key works: a lead appears in Leads straight away. The PHP example runs on your own server, which keeps the key out of the browser — the safest option if your site has a backend.
Submissions arrive on the Leads page with Source "Website". Spam tip from the card: add a hidden input named website to your form — submissions that fill it are treated as bots and silently dropped.
Custom fields and UTM parameters
The same request can carry attribution and any custom fields you've defined for leads.
UTM parameters — send them at the top level of the body, in either snake_case (as most marketing tools emit them) or camelCase:
body: JSON.stringify({
name: form.name,
email: form.email,
utm_source: params.get("utm_source"), // or utmSource
utm_medium: params.get("utm_medium"), // or utmMedium
utm_campaign: params.get("utm_campaign"), // or utmCampaign
utm_term: params.get("utm_term"),
utm_content: params.get("utm_content"),
})
A typical pattern is to read them from the landing page's URL when it loads (new URLSearchParams(location.search)), store them in hidden inputs or sessionStorage, and include them when the form submits — so a visitor who browses for a while before filling the form still carries the campaign that brought them.
They land on the lead's UTM fields and are available everywhere UTMs are: the Leads table columns, Search & conditions filters, workflow conditions, and Meta Reverse Sync attribution.
Custom fields — first define the field in Settings → Custom Fields (entity: Lead) and note its key. Then send values under a customFields object keyed by those keys:
body: JSON.stringify({
name: form.name,
customFields: {
budget: form.budget, // key exactly as defined in Settings
preferred_city: form.city,
},
})
Values are checked against your definitions before saving: keys you haven't defined are dropped, numbers are parsed, dates normalised, checkboxes coerced to true/false, and select values must match one of the field's options (anything else is stored as empty). This means a stranger who finds your endpoint can't write arbitrary data into your leads — only the fields you've chosen to expose.
The Website Leads card shows your organisation's actual field keys in its snippet, so you can copy them directly. Custom field values appear in the lead drawer's Custom Fields section, as optional table columns, and can be used in Search & conditions and workflow conditions (cf: fields).
Remember to click Save Integrations at the bottom after changing the Meta or Website cards.