Integration

Email notifications - templates, transport and logging

Updated 20 August 2026

AdOps sends transactional email over SMTP from four templates: email confirmation, payment link, notification and rule notification. Only the confirmation message is emitted today; its link confirms the address and starts the 14-day trial. Every send attempt is logged with its recipients, subject, status and the mailer response.

Transactional email over SMTP from four templates - confirmation, payment link, notification and rule notification - with every send attempt written to a log.

Status: Live Notification

In numbers

The figures behind this connection

Templates
4 - email confirmation, payment link, notification and rule notification
Transport
SMTP, with host, port, username and password read from the deployment environment
Default sender
"AdOps" <admin@adops.id>
Recorded per attempt
Event type, recipients, subject, template, context, status, error message, mailer response and sent-at time
Confirmation resend cooldown
60 seconds between resends
Live path today
The confirmation email; the other three templates are registered but no code path emits their events

The exchange

What AdOps reads, and what it writes.

Two lists, no summary in between. Anything absent from the write column is something AdOps cannot change in this system.

AdOps reads

Every field the engine requests, and nothing else.

  • The SMTP server's own response to each send, stored verbatim on the log record
  • The transport outcome, success or error, plus the error message when a message is rejected
  • No mailbox: AdOps holds no IMAP or POP connection and never reads an inbox or a reply

AdOps writes

Every change the engine is able to make.

  • Messages rendered from four EJS templates: email confirmation, payment link, notification and rule notification
  • The confirmation message, carrying a 64-character token link that confirms the address and starts the 14-day trial
  • A default From header of "AdOps" <admin@adops.id> on every message
  • Nothing else: the transport is driven by those four events only, with no bulk or marketing send path
The AdOps notification fields beside a preview of the email a rule sends, showing a campaign name, the budget change from 150,000 to 250,000 and the conditions that caused it. Sample data
The alert names the campaign, the change and the conditions that triggered it — so the mail is the whole story, not a ping. Read the details

AdOps sends transactional email over SMTP. Four EJS templates are defined, each bound to its own event on an internal event bus: email confirmation, payment link, notification and rule notification. Every send attempt, successful or not, is written to a log record carrying the recipients, the subject, the template, the status and the mail server’s own response.

Which email does AdOps send today?

The confirmation email. Signing up puts an address into the double opt-in flow: AdOps sends a message carrying a 64-character token link, and following that link confirms the address and starts the 14-day trial. The confirmation screen offers a resend button on a 60-second cooldown, counting the remaining seconds down.

The other three templates - payment link, notification and rule notification - are defined and their handlers are registered on the same event bus, but no code path currently emits those events. They are wiring, not a shipped alert channel.

Does AdOps alert me when a rule fires?

Not by email today. A rule can carry a notification entry with a channel type of email plus a recipient address and name, and that field is stored with the rule, but it is not currently what triggers an outgoing message.

What does exist is the written record. Every rule run writes a per-campaign, per-task result with an Executed, Not Executed or Skipped badge, the value each condition resolved against the value it was tested for, the parameters the action used, and the before and after values for budget and name changes. The Activity Log lists only the actions that genuinely executed, filterable by event name, ad account, rule name, entity ID, entity name and action, so the question “what did the automation do to this campaign last Tuesday” is a search rather than a support ticket.

What is recorded for each send?

One log document per attempt, holding the event type, the recipient list, the subject, the template name, the context the template was rendered with, a status of success or error, the error message when there is one, the mail server’s own response string and the time the attempt was made. That is enough to answer whether a message left the platform, who it was addressed to and what the transport said about it, without guessing from a customer’s screenshot.

How is the transport configured?

Through the deployment environment: SMTP host, port, username and password, with a default From header of "AdOps" <admin@adops.id>. Templates are rendered server-side with EJS before hand-off, so the message body is assembled by AdOps rather than by the mail provider.

What this integration is not

It is not a marketing or lifecycle email system: there are no sequences, no lists, no segments and no bulk send path, and the transport is driven by four events only. It is not a two-way channel either, since AdOps holds no IMAP or POP connection and never reads an inbox or a reply. And it is not the audit trail. If you need to know what an automation did, the rule log detail and the Activity Log are the record, and they do not depend on a message arriving.

Questions

Asked about this connection.

Direct answers, with the numbers attached.

Which emails does AdOps actually send today?

The confirmation email. Signing up sends it, and the link inside confirms the address and starts the 14-day trial. The payment link, notification and rule notification templates are defined and their handlers are registered on the same event bus, but no code path currently emits those three events.

Does AdOps email me when a rule pauses a campaign?

Not today. A rule can carry a notification entry with a channel type of email plus a recipient address and name, and the field is stored on the rule, but it is not currently the trigger for an outgoing message. The Activity Log and the rule log detail are where a run is checked: every run writes a per-campaign, per-task record with an Executed, Not Executed or Skipped badge, the condition values the engine saw, and the before and after values.

Can support prove an email was sent?

Yes. Every attempt, successful or failed, writes a record carrying the event type, the recipient list, the subject, the template, the template context, the status, the mail server's own response string and the error message on failure.

How often can a confirmation email be resent?

Once every 60 seconds, and the screen counts the remaining seconds down on the resend button. The cooldown is held in the running process rather than in the database, so treat it as a user-interface guard rather than an enforced rate limit.

Where does AdOps send from?

Messages leave over SMTP with the host, port, username and password supplied by the deployment environment, and carry a default From header of "AdOps" <admin@adops.id>.

Try this connection on your own account.

Every integration on this page is included on every plan. Connect it, leave your first rule in draft, and read the log after the first run.

Contact us See pricing

14 days free · no card · billed in Rupiah

Inside the product

What the screens actually look like

Nine screens from the working dashboard — the rule builder, the metric picker, the dayparting grid and the log that records what happened. Scroll the strip.

  • The AdOps Performance Dashboard showing a Purchase ROAS card at 2.380x and an Aggregated ROAS card at 2.088x, both badged Profitable, a Monthly Budget card at Rp 155jt, and a Spend Breakdown ranking the top five ad accounts against a budget utilisation bar at 45.5 per cent.
    Performance Dashboard. Two ROAS figures to three decimals, a budget meter, and spend ranked by ad account — over Today, Last 7 days, Last 30 days or This month.
  • The AdOps rule list showing twelve automation rules, each with an on/off toggle, the ad accounts it manages, and when it last triggered — some minutes ago, others on a dated timestamp.
    Rule List. Every rule, what it manages and when it last fired. The toggle is the only thing between draft and live.
  • The AdOps condition builder showing a task with time-of-day conditions across seven day tags, a nested AND group holding a lifetime spend condition under 400,000, and a second task with four stacked metric conditions.
    Conditions. Metric, period, operator, value — joined with AND or OR, and nestable, so a rule can say something a dropdown cannot.
  • The AdOps metric picker open over a condition row: a panel with Meta Ads and Custom metrics tabs, a search box, and a scrolling list of metrics with Spend selected.
    Metric picker. Forty-five Meta metrics and your own sheet columns in the same list, each carrying a reporting period and any of six operators.
  • The AdOps dayparting timetable: a grid of hours against the seven days of the week, with the daytime hours filled navy for every day and the night hours and weekend evenings left empty.
    Dayparting grid. Or draw the hours instead. Anything outside the shape you fill in simply does not run.
  • An AdOps execution log detail: one campaign, two action panels badged Not Executed, each listing the action parameters and every condition evaluated with its actual value, its expected value and a Pass or Fail badge.
    Rule Log detail. Why a rule did nothing is recorded as carefully as why it did something — actual against expected, condition by condition.
  • The AdOps activity log listing budget increases and campaign renames, each row naming the affected campaign by id, the rule that caused it and how long ago it happened.
    Activity Log. One row per change AdOps made in your account, naming the campaign and the rule responsible.
  • The AdOps ad account list: eighteen Meta ad accounts with on/off toggles, account ids, Active or Inactive badges and this month’s spend in rupiah.
    Ad Accounts. Accounts discovered from Meta arrive switched off. Nothing is read, and nothing is changed, until you turn one on.
  • The AdOps custom metric editor mapping a Google Spreadsheet: a spreadsheet id, a sheet name, a column to match campaigns on and a column holding the values.
    Custom metric. Point AdOps at a sheet, name the matching column and the value column, and your own number joins the metric list.

Every figure is rebuilt from the product’s own interface and filled with invented data — no customer name, ad account or spend figure appears anywhere on this site. See how a run works