Now onboarding Florida small businesses
LogiccaptureConsentstable

Capture consent

Record that the caller agreed to be contacted by phone or text (TCPA consent). Put it right after they say yes — e.g. off a 'press 1 to consent' branch. D…

What it does

Records that the caller agreed to be contacted by phone or text (TCPA consent). When the flow reaches this node it writes a consent_records row for the caller's own number, stamped with the call so the recording is the proof, and then continues down its __next edge. It performs no audio itself — it's a persist-and-continue node you place after the moment the caller agrees.

The scope field decides what the consent covers:

  • transactional — reminders, confirmations, callbacks. The everyday case; a spoken or keypress "yes" is sufficient and is stored as express consent.
  • marketing — promotions and win-backs. A higher bar; the consent is stored as written consent (the call recording is the electronic record). Only use this when the caller clearly opts in to promotional contact.

The number defaults to the caller's own line, so you never have to wire it up. Once recorded, the outbound dial + text gates honor it, and a later STOP always overrides it.

When to use it

  • Off the "1" branch of a gatherDigits node that asked "press 1 to agree to appointment reminders by text"
  • After an aiAgent interaction where the caller says yes to being texted (though the agent's own record_consent tool usually covers that in-line)
  • Any point in a flow where the caller has just, unambiguously, agreed to be contacted and you want a durable, provable consent record

Configuration

Record that the caller agreed to be contacted by phone or text (TCPA consent). Put it right after they say yes — e.g. off a 'press 1 to consent' branch. Defaults to the caller's own number.

FieldLabelTypeRequiredDefaultNotes
scopeConsent scopeselectOptionaltransactionalOptions: transactional, marketing. Transactional covers reminders/confirmations/callbacks. Marketing is for promotions and needs a clear opt-in.

Examples

Press-1-to-consent branch

A gatherDigits node asks the caller to press 1 to receive reminders; the 1 edge lands on a captureConsent node, which records the consent and continues to the confirmation prompt.

{
  "id": "record-reminder-consent",
  "type": "captureConsent",
  "config": { "scope": "transactional" },
  "on": { "__next": "reminder-confirmed" }
}

Marketing opt-in

After the caller explicitly agrees to promotional texts, record marketing consent (stored as written consent, backed by the call recording).

{
  "id": "record-marketing-consent",
  "type": "captureConsent",
  "config": { "scope": "marketing" },
  "on": { "__next": "thanks" }
}

Gotchas

  • Place it AFTER the agreement, not before. The node records consent unconditionally when the flow reaches it — it does not ask the caller anything. Gate it behind a gatherDigits "press 1" branch or a spoken confirmation so you only record consent the caller actually gave.
  • It always records the caller's own number. There's no field to record consent for a third party — that would be capturing consent the caller can't give. Use the API (POST /orgs/:slug/consent) for consent captured out-of-band.
  • A later STOP wins. Consent recorded here is overridden the moment the caller texts STOP; the outbound gates read the opt-out first.
  • Best-effort persist. The write is fire-and-forget so a transient database hiccup never drops or delays the call — it just means that one consent row wasn't written.