Feature · Work

Outreach

Control who may contact people outside your organization.

Last changed

Generated from commit be57775 ·

How it works

Who can reach out

The chief executive and the assistants can reach out by default. Other workers cannot until an admin turns outreach on for them on Outreach. Each worker has its channels, a daily limit and an approval rule.

What a worker gets back

Each message is sent, waiting for approval, queued or blocked. A blocked message shows the reason, for example "Outreach is off for Maya. Turn it on in Maya's settings." A queued message waits for the sending hours and then goes out.

Approvals

The owner approves the first message to each new contact. The approval comes as a decision card on WhatsApp and on the web. Under Every message, each message waits for a person. Under Never, a message to a contact who opted in goes at once.

Workers add contacts as they work. You can add them or import a CSV after a preview. A contact who replies STOP, or opens the unsubscribe link in an email, opts out. Nobody can send to them again until a person records new consent.

WhatsApp and email rules

On WhatsApp, a worker can send free text only within 24 hours of the contact's last message. Outside that window, only a template that Meta approved can start the conversation. Each email names your organization, says why the person gets it and has an unsubscribe link. Replies go to the owner's email.

Limits

The organization sends at most 50 messages each day by default, and each worker at most 20. Change the limits, the sending hours and the reply address in the Outreach settings. Only owners and admins can change them.

From the help article Outreach to people outside your organization, checked against the product on .

What you can do

The operations this feature's screens call. Each one is POST /api/<name>, and the badge says who may call it.

  • getOutreachSettings

    Viewer

    Gets outreach settings.

    Types: Record<string, never> returns OutreachSettingsView

  • getOutreachStats

    Viewer

    Gets outreach stats.

    Types: { days?: number } returns OutreachStatsDto

  • listOutreachMessages

    Viewer

    Lists outreach messages.

    Types: ListOutreachMessagesRequest returns ListOutreachMessagesResult

  • saveOutreachSettings

    Admin

    Saves outreach settings.

    Types: SaveOutreachSettingsRequest returns OutreachSettingsView

  • decideOutreachMessage

    ApproverNo API tokens

    Decides the outreach message.

    Types: { messageId: string; decision: 'approved' | 'denied'; comment?: string } returns OutreachMessageDto

  • listOutreachContacts

    Viewer

    Lists outreach contacts.

    Types: ListOutreachContactsRequest returns ListOutreachContactsResult

  • deleteOutreachContact

    Admin

    Deletes the outreach contact.

    Types: { id: string } returns { deleted: boolean }

  • saveOutreachContact

    Member

    Saves the outreach contact.

    Types: SaveOutreachContactRequest returns OutreachContactDto

  • importOutreachContacts

    Member

    Imports outreach contacts.

    Types: ImportOutreachContactsRequest returns ImportOutreachContactsResult

  • releaseOutreachContact

    Admin

    Releases the outreach contact.

    Types: { id: string } returns OutreachContactDto

Screens

What it records

The feature writes these events to the audit log, the permanent record of what happened.

  • Action denied
  • Approval expired
  • Approval received
  • Outreach contact changed
  • Outreach message changed
  • Outreach settings changed

Generated from code at commit be57775 ·

Turn the numbers into shipped work.

Agent runs these choices for you: a persistent AI worker with memory and rules, on your Claude and Codex subscriptions.