Skip to content

Contact.unsubscribe

Stops commercial email to a person in one click, for one topic or all, at once.

Action class
None
Approval
Runs on its own
Emits
Contact.unsubscribed
Venues
Gmail, Outlook
Price
Free
More factsFewer facts
POST https://api.sb/{your-domain}/contacts/{contact}/unsubscribe

Its Inputs, Outputs, Effects and guards quote the hub’s Contact.unsubscribe; this page adds what each Venue honors, its limits and a worked call. It is one of the Verbs of Mailboxes.

Inputs

NameTypeMeaning
contactContactRequired. The Contact.
topicstringOne topic; omitted, every commercial topic. Optional.

Outputs

FieldTypeWhat null means
contactContactNever null: the Contact, unsubscribed.

Effects

Action class

None: no approval rule names it, so it runs within its seat’s Permissions and Limits

Modes
  • try: Runs every check and returns the record as it would be; nothing is stored.
  • send: Returns a pending Action at once; Contact.unsubscribed fires when it is done.
  • do: Waits for the Action to finish and returns the record.
Idempotency

Only with a key: the same Idempotency-Key and input return the first Action, and the same key with other input returns 409.

Saved or shared

Writes a Suppression when no topic is named. Never asks for sign-in or confirmation, and never waits.

Emits

Contact.unsubscribed with { contact }

Performed by

Whichever seat calls it

Price

Free on your own account: the platform charges nothing for the call.

On each Venue

VenueFormats
GmailNone.
OutlookNone.

Each Venue’s caps, review and rate limits are on its integration page, linked from its row. A field marked Not sent is one that Venue has no place for; the call never fails on it.

What try does

AccountWhat try does
GmailRenders the exact email, headers included, and returns it with the time it would send; nothing reaches Gmail and no draft is saved.
OutlookRenders the exact email or invite and returns it with the time it would go; nothing reaches Outlook and no draft or event is saved.

Refuses when

The hub sets no guard of its own on this call: it refuses only on the shared checks every write meets (a missing record, a Permission the seat lacks).

Through a connected account it can also meet the shared account refusals.

When it waits

Returns in one response; nothing waits.

Example

In send mode the call returns its pending Action at once, and Contact.unsubscribed delivers the result.

You, to your agent
Rosa asked for no more newsletters, only replies to her own emails.
Response, in send mode
{
  "mode": "send",
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/action_Sd3kQ9vT2w",
    "operation": "Contact.unsubscribe",
    "status": "pending",
    "reason": "running"
  }
}

To retry, send the same Idempotency-Key: the retry returns the first answer for $0. A new key reads again.

Used by