Watch our latest video available on Youtube.
Tutorials/Tutorial

Streak CRM + Airtable: Run Your Pipeline From Gmail

Airtable is an excellent CRM database and an awkward email client. This tutorial shows how to keep your conversations in Gmail with Streak while your structured deal data stays synced in Airtable — using native automations on both sides and two webhooks.

YouTubeIntermediate11 min readJul 30, 2026
AirtableStreakGmail

If you run your CRM inside Airtable, one thing is quietly driving you mad: email.

Airtable is superb at everything structured. It tracks the data, keeps customers in check, runs the billing, and kicks off downstream processes from one place. But replying to a lead, tracking the back-and-forth, and pulling that email history back into the base is genuinely awkward. The conversation lives in one place, the data lives in another, and you spend your week stitching the two together by hand.

This tutorial covers the fix built in the video below: keep every conversation in Gmail using Streak, and keep the structured data synced in Airtable — with two webhooks and no external automation tools.

By the end you will have:

  • New form submissions in Airtable automatically creating a Streak box in your Gmail pipeline
  • A contact attached to that box so the email thread is tracked from the first reply
  • Stage changes and deal fields edited in Gmail pushing straight back into Airtable
  • A deep link on each box that opens the matching Airtable record

Streak approached us about featuring their product in the video. The build, the workflow, and the opinions below are our own.

Why Bother Connecting a Second CRM

The instinct when your CRM feels clunky is to migrate. That is usually the wrong move when the clunkiness is confined to one job.

Airtable earns its place because of what happens after the deal: billing, time tracking, project delivery, reporting, and every automation you have wired into those tables. None of that is a reason to move. The friction is narrow — it sits entirely in the email leg of the pipeline, where you need threads, templates, reply tracking, and a view of the conversation next to the deal.

Streak is interesting here because it is not another separate app. It installs as a Chrome extension on top of Gmail, so the CRM layer lives inside the inbox your team already has open all day. That makes it additive rather than a replacement — and it means the only real question is whether the structured data can flow both ways.

It can. That is what the rest of this tutorial builds.

How Streak Maps to Airtable Concepts

If you know Airtable, Streak's model reads almost one-to-one:

StreakAirtable equivalentNotes
PipelineTableYou can run several pipelines side by side
BoxRecordHolds the email thread, contacts, notes, and tasks
StageSingle-select status fieldDrives the pipeline view and the outbound webhook trigger
Custom columnFieldText, number, date, select, and formula columns
ViewViewFiltered views sit underneath each pipeline
Magic columnsRollups you would otherwise buildLast interaction date, days in stage, email counts

During installation, Streak asks what process you want to track — sales, projects, hiring — and generates proposed pipeline stages and example columns from a short description of your business. Accept the suggestions to get moving; everything is editable afterwards.

Two features do the actual integration work:

  • Inbound webhooks — a URL you POST to that starts a Streak automation. This is how Airtable creates boxes.
  • Outbound webhooks — an action inside a Streak automation that POSTs a payload to any URL. This is how stage changes get back to Airtable.

Both live under Integrations and automations on the Streak home page, and both are found under Native integrations → Start from scratch.

Workflow 1: Form Submission → Streak Box

The starting point is a standard lead form on the website that already writes into an Airtable table — if you have not built one yet, see our guide to creating Airtable forms. We want each new submission to also appear as a box in Gmail, with the contact attached, so the reply can happen there.

1. Create the inbound webhook in Streak

In Streak, open Integrations and automations → Native integrations → Start from scratch, then pick Utilities → Inbound webhook as the trigger. Streak generates a unique URL. Copy it — the Airtable script posts here.

Leave the automation half-built for now. You need a real payload before the later steps can map fields.

2. Build the Airtable automation

In Airtable, create an automation with the trigger When record created on your website submissions table, then add a Run script action.

Add each field you want to send as an input variable in the left-hand panel, plus the record ID. The script itself is short:

// Input variables configured in the left panel of the script editor
const { name, email, description, budget, recordId } = input.config();

const STREAK_WEBHOOK = 'https://api.streak.com/...'; // your inbound webhook URL

const payload = {
  name,
  email,
  description,
  budget,
  recordId,
};

// Log the payload — you will paste this into Streak as the sample JSON
console.log(JSON.stringify(payload));

await fetch(STREAK_WEBHOOK, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(payload),
});

That console.log is the important line. Run the test in Airtable and the output panel prints the exact payload being sent. Copy it.

Keep the payload small at first. Name, email, description, budget, and record ID are enough to prove the loop; adding fields later is one line each. Our Airtable scripting guide covers input variables and fetch in more depth if this is your first script.

3. Paste the sample payload back into Streak

Return to the inbound webhook step in Streak and switch the request payload to JSON, then paste the logged sample. Streak parses it and exposes each key as a placeholder in the steps that follow. If a field never appears in a later dropdown, it is almost always a spelling mismatch between the script and the sample — copy and paste the key rather than retyping it.

4. Add the "Create box" step

Add Streak → Create a box and choose the target pipeline.

Map the fields:

  • Name — the name value from the webhook payload
  • Record ID — a custom text column you add to the pipeline, mapped to recordId
  • Budget, description, and anything else — mapped from their matching keys
  • Stage — hardcode this to your first stage, for example New Inquiry

The record ID column is what makes the return trip reliable. Without it you would be matching deals on email address, which fails the first time someone replies from a second address.

5. Add the contact

Add Streak → Add contact to box. The Box key field should already be prepopulated from the create-box step above it — if it is not, select it manually from that step's output. Map the email and name from the webhook payload.

Attaching the contact is what pulls the email thread into the box. From that point, every message to or from that address is tracked on the deal, alongside notes, tasks, and the fields that came from the form.

Save the automation. Streak logs every run with success and failure counts, so a broken mapping is visible immediately rather than three days later.

Because the box now carries the Airtable record ID, you can add a Streak formula column that builds a clickable URL:

'https://airtable.com/appXXXXXXXX/tblYYYYYYYY/' + $'Record ID'

Streak formula columns are JavaScript-style expressions: other columns are referenced as $'Column Name', and strings join with + rather than Airtable's &. Swap in your own base and table IDs — they are the app… and tbl… segments of the URL when you have the table open in Airtable. Now every box in Gmail is one click from the full record: billing history, projects, files, and everything else Airtable is holding.

Submit a test form. Within seconds the record appears in Airtable and the box appears in Streak, with the form data visible in the right-hand panel of the deal.

Workflow 2: Stage Change → Airtable

The return leg is simpler, because Airtable's webhook trigger does the parsing for you.

1. Create the Airtable webhook automation

In Airtable, create a new automation and choose See all → When webhook received. Airtable generates a URL. Copy it.

2. Build the Streak automation

Back in Streak, create another native automation from scratch. This time the trigger is Streak → Stage change, scoped to your pipeline. Add Utilities → Outbound webhook as the action and paste the Airtable URL.

For the request payload, resist the urge to hand-pick fields on the first pass. Send the full payload — Streak includes the box name, notes, contact email, magic column values such as the last email timestamp, your custom fields, and the stage the box just entered. You can narrow it later once you know what you actually use.

Save the automation and give it a name; Streak creates it as Unnamed otherwise, which gets confusing by the third automation.

3. Generate a test payload

Go to a box in Gmail and change its stage — for example from New Inquiry to Engaged. Back in the Airtable automation, the webhook trigger's test results now show the full payload from Streak, including the two values that matter most: the record ID and any field a human edited in Gmail, such as agreed budget.

This is the same trick as the inbound direction. Trigger the real event once, and both platforms have concrete data to map against instead of guesses.

4. Update the Airtable record

Add an Update record action on your website submissions table:

  • Record ID — the recordId value from the webhook body
  • Stage — the entering stage name from the payload
  • Agreed budget — the custom field value

Map any other fields you care about, but keep the list short. Every field you sync is a field you have to keep consistent in two places.

Turn the automation on and change a stage in Gmail. The Airtable record flips to Engaged, the agreed budget lands, and the sales team never opened Airtable to do it.

One thing you will notice in testing: a single interaction sometimes produces two webhook runs, because Streak emits an event for the stage change and another for a field saved at the same moment. Since the automation updates the same record by ID with the same values, that is harmless. It only matters if you chain something irreversible off the update — a notification, an invoice, a status email. In that case, add a condition that continues only when the incoming stage differs from the stage already on the record.

What You Get Day to Day

Once both workflows are live, the working pattern looks like this:

Everything conversational happens in Gmail. A lead comes in, the box is already there with the form data in the sidebar. You reply from a saved snippet — "invite for a call" — and the thread attaches itself to the deal. You add meeting notes after the call, create a task for the follow-up, and fill in the agreed budget while you are still reading the reply. Streak's magic columns quietly track the last interaction date and how long the deal has sat in its current stage.

Everything structured stays in Airtable. The moment the stage moves, the record updates — which means your existing automations keep working untouched. Invoicing off a Won stage, onboarding sequences, capacity planning, revenue reporting: none of it needs to know that a human moved the deal from inside an inbox.

That is the point of the two-webhook design. You are not replacing your Airtable CRM — you are giving it an email front end and letting each side do the job it is actually good at.

Extending the Build

A few natural next steps once the core loop is running:

Push Airtable changes back to Streak. Right now data flows into Streak only on form submission. Add a second inbound webhook and trigger it from an Airtable field change or a button field, and edits made in the base — a revised quote, a new project link, an updated owner — appear on the box in Gmail. Our Airtable buttons guide covers the trigger side, and the Airtable automation guide covers the plumbing.

Sync magic columns for reporting. Days-in-stage and last-interaction date are exactly the numbers that make a pipeline report useful. Map them into Airtable fields and they feed straight into your pipeline dashboard.

Route by owner. Add an owner field to the payload and let the Streak automation assign the box, so the right person sees the deal in their own pipeline view.

Handle the "no reply" case. An Airtable automation that watches for deals sitting in one stage past a threshold — using the synced days-in-stage value — turns the integration into an actual follow-up system rather than a record of one. The reminder-and-escalation pattern in our approval workflow guide transfers directly.

When to Get Help

The build in the video takes an afternoon. Making it production-safe for a team — deduplication rules, field mapping across a real pipeline, error handling on the scripts, and training people not to edit the same field in both systems — is usually a couple of days.

Consider bringing in an Airtable consultant when:

  • Your pipeline has multiple owners and routing rules rather than a single inbox
  • Deal data drives billing or contracts, so a bad sync costs real money
  • You are consolidating an existing CRM into this pattern and need a migration plan
  • You want the same lead flow feeding service and field sales operations downstream

We build and maintain these systems for agencies and service businesses. If you would rather have it built to your exact workflow, see how we work.

Next Steps

  • Build the inbound half first and confirm boxes appear with contacts attached before touching the return leg
  • Keep the synced field list to stage plus anything a human edits in Gmail
  • Store the Streak box key on the Airtable record so you can push updates back later
  • Add a condition on the Airtable side if the stage update triggers anything irreversible
  • If your team runs on Outlook rather than Gmail, this specific tool does not apply — Streak is Google Workspace only

Best of both worlds: conversations and email threads stay in Gmail where your team already works, and structured data stays synced in Airtable for billing, time tracking, and reporting. No more copy-pasting, and no more remembering to update the status in a base nobody has open.

Frequently Asked Questions

Common questions about this tutorial.

Ready to Transform Your Business Operations?

Join 100+ companies that have automated their way to success. Get started today and see the difference.