Meta Ads + SalesCrew

Spend and campaign performance from the Meta Ads API, collected read-only into the database that holds your leads. Leads arrive through your forms or the inbound endpoint, with their source recorded.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.

Want to see it first? Book a demo

  • Read-only collector
  • Spend beside leads
  • Source recorded on every lead
app.salescrew.io/settings
Settings: MCP tokens, integrations and the audit log

The short answer

  • A read-only collector pulls Meta Ads spend and campaign data into the marketing tables in your own Postgres project.
  • Meta lead form submissions sync into SalesCrew as leads with their source recorded, or you post them through a webhook or an automation tool into your instance's inbound endpoint.
  • Instagram and Facebook direct messages land as threads in the unified inbox, next to email, so a reply to an ad sits on the same contact record.

Mechanism

What the collector does, how leads arrive, and where messages land.

WhatMechanismDirectionObjectsStatus
Spend and campaign dataRead-only collector against the Meta Ads APIInboundMarketing tables in your instanceAvailable
Channel economicsSpend joined to leads and deals in one databaseInternalMarketing tables, leads, dealsAvailable
Leads through the inbound endpointWebhook or automation tool into the inbound endpointInboundLeads, contactsAvailable
Meta lead formsLead form sync with the source recordedInboundLeads, contactsAvailable
Instagram and Facebook direct messagesMessages in the unified inboxTwo-wayThreadsAvailable
Budget guardSpend sits in the human-only policy class, so budgets and campaigns stay with a person in MetaNonePolicy tableAvailable

Mechanisms read from the SalesCrew integration table, September 2026. Meta's own documentation is the authority on Marketing API access and permissions.

Setup

The collector is quick. Getting leads in takes the thought.

  1. 1

    Grant read access to the ad account

    The collector reads spend and campaign performance. It cannot change a campaign, and no agent can either.

  2. 2

    Store the credentials

    They go into your instance's Supabase Vault and are never shown again after entry.

  3. 3

    Backfill, then schedule

    marketing_pull runs one on demand; the scheduled pulls keep the tables current.

  4. 4

    Decide how leads arrive

    Turn on lead form sync, or route leads through your website form, a webhook, or an automation tool calling the inbound endpoint.

  5. 5

    Record the source on every lead

    Without a source, spend and leads sit in the same database and still cannot be joined. This is the step that makes the collector worth having.

  6. 6

    Set a sample floor

    Agree the minimum spend or clicks you will judge a campaign on, and write it down before the first review rather than during an argument.

Questions

How do Meta lead form submissions reach SalesCrew?
Lead form sync brings each submission in as a lead, or you post them through a webhook or an automation tool such as Zapier, Make or n8n. Each lead lands on the inbound channel with its source recorded.
Can an agent pause a campaign that is wasting money?
No. Every action that spends money is human-only under the default policy. An agent can show you the numbers and can create a task about it.
Does it collect Instagram ad spend?
Ad spend collected from the Meta Ads API covers the placements that account reports on. Google Ads, Microsoft Ads and PostHog are collected the same way into the same tables.
Which tier has the marketing module?
Agency at $1,200 a month, with unlimited seats.

Put Meta spend beside the leads it bought

Read-only campaign data in your own database, joined to leads and deals by source.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.

Want to see it first? Book a demo