Flow · 13 steps

Send mail from your own domain

Send email to customers and suppliers from your own domain, and see the record of each message.

Every message goes out under your organization's name and is recorded: what it was, why, to whom, from which address, when, and what became of it. Until your domain is verified, mail comes from Manifold's sending address, with replies to your accounts email. Adding the domain gives you the DNS records to create. Once they are found, mail comes from your accounts email itself.

Services involved

A filled dot is a read; a ring is a call that changes something.

  • Notifications: https://notifications.getmanifold.io

Every call carries Authorization: Bearer $MANIFOLD_TOKEN unless its step says otherwise (getting a token). Run a flow in your sandbox, not your live organization: see Before you start.

1 Name the sender

The name recipients see, and the accounts email every message's replies go to.

PUT /settings/sender Notifications

Request · application/json
{
  "senderName": "Ridgeline Outdoor",
  "accountsEmail": "accounts@notify-domain.example.com"
}

What the answer holds: the operation's example.

Records notifications.sender-saved.

2 Add the domain

The mail provider registers the domain and the answer lists the records to create — each a type, a name and a value to copy into the DNS host.

POST /settings/domain Notifications

Request · application/json
{
  "domain": "notify-domain.example.com"
}

What the answer holds: the operation's example.

Records notifications.sending-domain-added.

3 Add it again

A retry of the same domain answers it as it stands and appends nothing.

POST /settings/domain Notifications

Request · application/json
{
  "domain": "notify-domain.example.com"
}

What the answer holds: the operation's example.

Records nothing.

4 Check the records

Each record is looked up in public DNS and the provider gives its verdict; once it has found the DKIM keys the domain is verified (it is checked on an interval as well, so nobody has to press the button).

POST /settings/domain/check Notifications

What the answer holds: the operation's example.

Records notifications.sending-domain-verified.

5 Send a test message

From the accounts email itself now, signed by the domain's keys. The notification is a fact before the provider is called and another when it answers, with the provider's message id.

POST /notifications/test Notifications

Request · application/json
{
  "notificationId": "ntf_01a15889-0b42-7e6d-8a5c-2f1b0e9d8c7a",
  "channel": "email",
  "to": "ops@notify-domain.example.com"
}

What the answer holds: the operation's example.

Records notifications.requested, notifications.sent.

6 Retry the send

The same notificationId is the notification as recorded: no second message, nothing appended.

POST /notifications/test Notifications

Request · application/json
{
  "notificationId": "ntf_01a15889-0b42-7e6d-8a5c-2f1b0e9d8c7a",
  "channel": "email",
  "to": "ops@notify-domain.example.com"
}

What the answer holds: the operation's example.

Records nothing.

7 Read the log

Newest first; narrow by status, kind, the record a message was about, or one recipient.

GET /notifications?to=ops%40notify-domain.example.com Notifications

What the answer holds: the operation's example.

8 Read one notification

Each step of its life: requested, then sent, then what the provider reported — delivered, or bounced or marked as spam with the provider's diagnostic.

GET /notifications/ntf_01a15889-0b42-7e6d-8a5c-2f1b0e9d8c7a Notifications

What the answer holds: the operation's example.

9 Read the suppressed addresses

An address that bounced for good, marked a message as spam or opted out of texts is listed here, and every send to it is refused until the suppression is lifted.

GET /suppressions Notifications

What the answer holds: the operation's example.

10 Switch open tracking off

Mail to customers and suppliers records its first open and first click unless the organization switches tracking off; it applies to messages sent from now.

PUT /settings/tracking Notifications

Request · application/json
{
  "enabled": false
}

What the answer holds: the operation's example.

Records notifications.tracking-set.

11 Switch it off again

Tracking as it stands is idempotent by content: nothing is appended.

PUT /settings/tracking Notifications

Request · application/json
{
  "enabled": false
}

What the answer holds: the operation's example.

Records nothing.

12 Let the domain go

Mail goes from Manifold's address again; the records can then be deleted at the DNS host.

DELETE /settings/domain Notifications

What the answer holds: the operation's example.

Records notifications.sending-domain-removed.

13 Read the settings

The sender as saved, no domain, tracking off, and the address mail goes out from now.

GET /settings Notifications

What the answer holds: the operation's example.

What a recorded fact is: Facts and the journal. Why a repeated step changes nothing: Idempotency and retries.