Workflows

Lead capture playbook

Get leads from your website, Google Ads, Facebook Ads, and Instagram Ads into RemixCRM automatically.

What this covers

Every common way to get leads from the outside world into RemixCRM:

  • Your own website (form on Squarespace, Wix, WordPress, Webflow, plain HTML)
  • Google Ads (Lead Form Extensions)
  • Facebook Ads / Instagram Ads (Lead Ads)
  • Calendly (when someone books a call)
  • TikTok Lead Generation Ads
  • Manual paste / CSV

All routes funnel into the same leads table in your org. Every lead, no matter the source, fires the lead.created outbound webhook — so any downstream automation (Slack alert, auto-reply email, SMS confirmation) runs once, regardless of where the lead came from.

The two integration patterns

There are exactly two ways to send leads into RemixCRM:

  1. Lead APIPOST /api/v1/leads with your API key. Direct, no middleman, fastest. Use when the source can send a custom HTTP request (your own backend, n8n, Zapier custom-webhook action).
  2. Webhook receiver — point the source at a Zapier/Make/n8n webhook trigger, transform the payload, then call the Lead API. Use when the source (Facebook, TikTok) emits a fixed format you can't customize.

When in doubt, pattern 2 (via Zapier/n8n) is fine — the cost is one extra hop and ~$20/mo for a Zapier Starter plan or self-hosted n8n ($0–$10/mo). The cost is zero engineering hours per new source.

Your own website

Squarespace / Wix / generic form builders

These platforms typically have a "Webhook on submit" or "Zapier integration" option:

  1. Build your contact form with at minimum: name, email, phone, event date
  2. Squarespace: Form → Storage → "Connect to Zapier" → New Zap
  3. Wix: Velo code or Wix Automations → Trigger on form submit
  4. In Zapier: Trigger = form submit. Action = "Webhooks → Custom Request":
    • Method: POST
    • URL: https://app.remixcrm.com/api/v1/leads
    • Headers: Authorization: Bearer rmx_yourkey
    • Data: JSON with mapped fields
  5. Map their fields → RemixCRM fields (name, email, phone, event_date)
  6. Turn on

See the Lead API doc for the exact field schema.

WordPress (Contact Form 7, WPForms, Gravity Forms)

Use the form plugin's webhook addon, OR install Zapier-for-WordPress. Same pattern as above: form submit → POST to /api/v1/leads.

For Gravity Forms specifically, there's a "Webhooks" addon ($59/year) that lets you POST directly without Zapier — saves the middleman.

Plain HTML (recommended for full control)

Drop this on any page. Note the API key is on your server, never in the HTML:

Frontend (anywhere on your site):

<form id="rcm-lead" class="space-y-3">
  <input name="name" placeholder="Your name" required />
  <input name="email" type="email" placeholder="Email" required />
  <input name="phone" placeholder="Phone" required />
  <input name="event_date" type="date" required />
  <select name="event_type">
    <option>Wedding</option>
    <option>Birthday party</option>
    <option>Corporate event</option>
    <option>Other</option>
  </select>
  <textarea name="notes" placeholder="Tell us about your event"></textarea>
  <button type="submit">Get a quote</button>
</form>

<script>
document.getElementById('rcm-lead').addEventListener('submit', async (e) => {
  e.preventDefault()
  const fd = new FormData(e.target)
  const res = await fetch('/api/lead', {
    method: 'POST',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify(Object.fromEntries(fd)),
  })
  if (res.ok) {
    e.target.innerHTML = '<p>Got it — we’ll be in touch within 24 hours.</p>'
  } else {
    alert('Something went wrong. Please email us at hello@yourdomain.com.')
  }
})
</script>

Backend (/api/lead on your site — Node, Next.js, PHP, anything):

// pseudo-code
app.post('/api/lead', async (req, res) => {
  await fetch('https://app.remixcrm.com/api/v1/leads', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.REMIXCRM_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      ...req.body,
      source: 'Website contact form',
    }),
  })
  res.json({ ok: true })
})

The API key lives in your server's env vars. Browser-side code never sees it.

Google Ads — Lead Form Extensions

Google Ads has a built-in lead form that captures user info without sending them to your site. Higher conversion, simpler attribution.

Setup

  1. Google Ads → Tools → Audience Manager → Lead Form Asset
  2. Build the form: questions, headline, business info
  3. In Lead delivery options, choose Webhook integration:
    • Webhook URL: Your bridge endpoint (you'll build this — keep reading)
    • Key: A shared secret you'll verify

Google posts each lead to your webhook URL with a payload like:

{
  "lead_id": "...",
  "api_version": "1.0",
  "form_id": "...",
  "campaign_id": "...",
  "google_key": "your-shared-secret",
  "user_column_data": [
    { "column_name": "FULL_NAME", "string_value": "Jane Doe" },
    { "column_name": "EMAIL", "string_value": "jane@example.com" },
    { "column_name": "PHONE_NUMBER", "string_value": "+15551234567" }
  ]
}

The bridge — Zapier or n8n

Google's payload doesn't match RemixCRM's /api/v1/leads schema, so you need a quick transform.

With Zapier:

  1. Trigger: Webhooks by Zapier → Catch Hook (get a URL)
  2. Paste that URL into Google Ads
  3. Action: Code by Zapier (JavaScript) — parse user_column_data into name, email, phone
  4. Action: Webhooks → Custom Request → POST to /api/v1/leads with your API key

With n8n:

  1. Webhook node → public URL into Google Ads
  2. Function node — flatten user_column_data to top-level fields
  3. HTTP Request node → POST /api/v1/leads with your API key

In your RemixCRM payload, set source: 'Google Ads' so you can filter leads by acquisition channel later.

Facebook Ads / Instagram Ads — Lead Ads

Meta's Lead Ads work the same as Google's: form rendered inside FB/IG, lead data posted to your webhook. The cleanest path is via Zapier or n8n because Meta's webhook setup requires app review (more work than it's worth).

Easy path — Zapier

  1. Zapier offers a native Facebook Lead Ads trigger
  2. Choose your page + lead form
  3. Action: Webhooks → Custom Request → POST to /api/v1/leads
  4. Map fields: full_namename, emailemail, phone_numberphone, event_dateevent_date

Zapier handles all the Meta webhook signing and refresh-token plumbing.

Easy path — n8n

n8n has a Facebook Lead Ads Trigger node (community node — install from the n8n marketplace). Same flow as the Zapier path but self-hosted.

Instagram Lead Ads

Instagram Lead Ads use the same Meta lead delivery system as Facebook — the trigger is identical, you just select your IG-connected page. No separate integration.

Custom Field tip

Add "Event date" as a multiple choice or custom question in your Meta lead form. Pre-fill suggestions like "Within 3 months / 3-6 months / 6-12 months / 12+ months" — then post the picked option into RemixCRM's notes field. The exact event_date can be confirmed during your first call.

TikTok Lead Generation

TikTok added Lead Generation in 2023. Zapier supports it as a trigger. Same pattern — TikTok trigger → transform → POST to /api/v1/leads.

Calendly

When someone books a call with you, RemixCRM auto-creates a lead. See Calendly integration for setup. The Calendly flow is special-cased — it uses a dedicated webhook endpoint at /api/calendly/webhook rather than the generic Lead API, but the resulting lead is identical and fires the same lead.created outbound webhook.

Manual entry / CSV import

For one-offs (referral from a friend, lead from an in-person conversation):

  • Leads → New in RemixCRM — paste in what you know
  • Clients → Import CSV — for batches (e.g. importing a list from a competitor's tool)

Putting it all together — recommended setup

For most DJ businesses, the right combination is:

  1. Your website's contact form → direct to Lead API
  2. Google Ads Lead Forms → Zapier bridge → Lead API
  3. Facebook + Instagram Lead Ads → Zapier bridge → Lead API
  4. Calendly → built-in webhook integration
  5. Outbound webhook from RemixCRM (lead.created) → Slack channel or SMS to your phone so you never miss a new lead

Total automation effort: ~30 minutes once, then forever.

Tracking which channel converted

Set the source field on every Lead API call:

  • source: "Website" — direct form
  • source: "Google Ads — Wedding campaign" — be specific, you'll thank yourself when reading reports
  • source: "Facebook — Summer 2026"
  • source: "Referral — [referrer name]"

RemixCRM matches the string against your lead_sources table or creates a new one. Reports → Leads by Source will group conversions and tell you which ads are actually paying off.

Things to watch out for

Duplicate leads. A user fills out your website form AND clicks your Facebook ad. You get two leads with the same email. Currently RemixCRM doesn't dedupe — you'll get both. Watch for this and merge manually for now. (Automatic dedup-by-email is on the roadmap.)

Phone format. International leads come in with different formats. Twilio receipts require E.164 (+15551234567). If you're running ads outside the US, normalize phones in your transform step before calling the Lead API.

Rate limit. Lead API is capped at 100 leads/hour per org. If an ad campaign goes viral and you hit the cap, leads start returning HTTP 429. Either rate-limit at the source (Zapier "Delay" step) or contact us to raise the cap.

API key security. Never put the Lead API key in client-side code, public Zapier zaps, or anything that gets shared. Treat it like a password. Revoke and rotate immediately if it leaks.