Skip to main content

Transactional Email Sendings

Description how to use the transactional project add on in Apsis One. The functionality is in BETA - please reach out to us if you plan to send transactional emails from the platform.


Send one-to-one emails — order confirmations, receipts, tickets, password resets — triggered by your own systems through the Apsis One API. This guide covers designing the email in Apsis One, creating the API key, building the API request, and following up on what was sent.

💡 What is a transactional email? A transactional email goes to one recipient as the result of something that person did — placed an order, bought a ticket, requested a new password. You design the email once in Apsis One, and your website, webshop or booking system then triggers it through the API, filling in the personal details (order number, product, date and so on) for each send.

🚨 Important for developers: use the section discriminator, not the section ID. The integration instructions shown in Apsis One display the API path with the section's numeric ID (for example /emails/sections/41259/...). The API call itself needs the section discriminator in that position (for example /emails/sections/com.apsis1.sections.user-created.default-abc123/...). Replace the number before you send the request.


On this page


1. Before you start

Setting up a transactional email is a shared job: you create and design the email in Apsis One, and a developer connects your system to the Apsis One API. Before you begin, make sure you have:

  • A section to create the email in. Many teams use a dedicated section for transactional sendings, so they're kept apart from marketing emails.

  • Access to create API keys in Apsis One (or someone who can create one for you).

  • A developer or integration partner who will make the API call from your system.

  • A list of the personal details each email needs — for an order confirmation that could be product name, order number and delivery date.

✅ Agree on the variable names with your developer before you design the email. The names you use in the editor are exactly the names the developer must send in the API request.


2. Create the transactional email

Go to Email in the left-hand menu and select Create email.

2a. Name and section

1. Enter a Working name (internal only), for example Transactional - Order confirmation.

2. In Send to profiles in this section, choose the section the email belongs to.

3. Open Advanced and tick Transactional Email.

4. Select Next.

💡 When you tick Transactional Email, the steps on the left change. A transactional email has five steps — Name, Templates, Design, Details, Overview — because there's no audience, A/B test or schedule to set. The API decides who receives it and when.

⚠️ The section can't be changed later. The email's content depends on the section's data, and the section is locked once you leave this step. This is also the section your developer will need the discriminator for.

2b. Choose a template

Pick a starting point from Pre-defined, Your templates or Themed, just as for any other email. Choosing Blank template works well if you want a clean, simple layout.

2c. Design the email and add variables

Build the email in the editor as usual. Wherever the content should be personal to each send, add a variable. Variables appear in the editor as tags, for example:

  • ToName — the recipient's name

  • ProductName — what they ordered

  • OrderNumber and TicketNumber — reference numbers

  • Valid — a date or validity period

⚠️ Remove unsubscribe and web version links. When you move on from the design, Apsis One checks for unsubscribe and web version links and shows a notice if it finds any: transactional emails shouldn't contain them. Select Make changes to remove them automatically, or Ignore to keep them.

✅ Keep images as links, not embedded files. Upload images to the Apsis One image gallery (or your own hosting) and link to them in the design.

2d. Email details

Fill in the Subject line, Pre-header text and the From details: sender Name, Email and Reply email. Then select Next.

💡 These are the default values. Your developer can override the subject, pre-header and sender details for an individual send in the API request, if needed.

2e. Overview and activation

The Overview step shows a summary of the email and an Integration instructions box. The box contains two things your developer needs:

  • The API path for this specific email — /emails/sections/{section}/activities/{activity ID}/transactions

  • An example request body, listing the variables you added in the design

Use the copy icon to copy the content and send it to your developer, then select Activate.

🚨 The path in the Integration instructions shows the section's numeric ID (here 41259). Tell your developer to replace it with the section discriminator. The activity ID in the path (the long ID after /activities/) stays as it is.

Once activated, the email is listed under Email → Transactional with the status Active, and is ready to be triggered through the API.

3. Create an API key for transactional emails

Your developer needs an API key that is allowed to send transactional emails.

1 Go to the API keys page in your account settings and create a new API key.

2 Give it a clear name, for example Transactional emails API.

3 Tick Allow sending transactional emails.

4 Select Create and share the credentials securely with your developer.

⚠️ The Allow sending transactional emails box is not ticked by default. Without it, the key can't trigger transactional emails, even if everything else is set up correctly.


4. Build the API request

This section is for the developer. Full technical details are in the Apsis One API documentation — Send a transactional email.

Each transactional email is sent with one POST request to:

{base URL}

/emails/sections/{section_discriminator}/activities/{activity_id}/transactions

  • Base URL — depends on your region (Europe or Asia). See the API documentation.

  • Authorization — a Bearer token generated from the API key created in step 3.

  • One request sends one email to one recipient.

4a. Use the section discriminator in the URL

Every section in Apsis One has both a numeric ID and a text discriminator. The Integration instructions show the ID, but the transactional endpoint expects the discriminator.

Example

❌ As shown in Integration instructions

/emails/sections/41259/activities/5327b821-852c-419c-bcec-8e71434422db/transactions

✅ What the API call needs

/emails/sections/com.apsis1.sections.user-created.default-abc123/activities/5327b821-852c-419c-bcec-8e71434422db/transactions

Your developer can retrieve the section discriminator through the API (the sections endpoint returns each section's discriminator), or you can look it up for them in Apsis One.

🚨 A request that uses the numeric section ID will not send the email. If your developer reports that the request fails even though the email is Active and the API key has transactional sending allowed, check this first.

4b. The request body

Here's a complete example for the order confirmation email above:

{   "keyspace_discriminator": "com.apsis1.keyspaces.email",   "profile_key": "jane.doe@example.com",   "to_email_address": "jane.doe@example.com",   "to_name": "Jane",   "variables": {     "ProductName": "Training jacket - reflective",     "OrderNumber": "987654321",     "TicketNumber": "123456789",     "Valid": "1 October 2026"   } }

Field

Required

What it is

keyspace_discriminator

Yes

The keyspace of the profile the send is recorded on. See Choosing a keyspace.

profile_key

Yes

The profile's key in that keyspace — for the email keyspace, the email address.

to_email_address

Yes

The address the email is sent to.

to_name

Yes

The recipient's display name.

variables

When used in the design

The values for the variables in the email. Names must match the editor exactly.

from_name, from_email_address, reply_email_address, subject_line, pre_header

No

Override the defaults set in the Details step for this send only.

✅ Validate the JSON before sending. A missing comma or a misplaced bracket is the most common reason a first test fails.

4c. Choosing a keyspace

Every send creates events — Sent, Delivered, Open and so on — on the profile identified by keyspace_discriminator and profile_key. If no matching profile exists, Apsis One creates one automatically.

Keyspaces allowed

Use it when

com.apsis1.keyspaces.email or com.apsis1.keyspaces.crm-id

The transactional events are posted on your existing profiles, so you can see them in the profile and use them in segments and automation.

4d. Variables and attachments

  • Supported variable types: String, Number (integer) and Date.

  • Dates must be sent in ISO 8601 format, UTC (for example 2026-10-01T08:00:00Z).

  • Keep variables short — they're meant to replace short pieces of text. All variables together, including their names, can be at most 200 kB.

  • Attachments can be added to the request. The total size of all attachments can be at most 2 MB.

  • Don't embed images in variables. Link to hosted images instead.


5. Follow up on sent transactional emails

In the email report

Go to Email → Transactional and open the email. The report shows Sent, Delivered, Opens, Clicks, Bounces and Spam Complaints, just like other email activities.

On the profile

Search for the recipient in Audience → Profiles (in the section the email belongs to), open the profile and go to Response data. Each send appears as Sent, Delivered and Open events. Select an event to see its details, including:

  • activityId — which transactional email was sent

  • toEmail and toName — who it was sent to

  • transactionId — the unique ID of this specific send

💡 A profile created automatically by a transactional send only holds its unique identifier (for example the Email keyspace). Other attributes, like first name, stay empty unless you set them separately. The variable values you send are used in the email only — they aren't saved as profile attributes.

✅ Developers can also check the status of a send through the API using the Get a transactional email sending status endpoint. See the API documentation.


6. Troubleshooting

Symptom

Likely cause & fix

The API request fails, although the email is Active.

Check that the URL uses the section discriminator, not the numeric section ID from the Integration instructions.

The request is rejected as unauthorised.

Check that the API key has Allow sending transactional emails ticked, and that the token was generated from that key.

The email arrives, but a variable is empty or shows the wrong value.

Variable names must match the editor exactly, including upper and lower case (OrderNumber is not orderNumber). Check that every variable in the design is included in variables.

The request is rejected as invalid.

Validate the JSON — look for missing commas and misplaced brackets. Also check that dates use ISO 8601 (UTC) and that attachments are under 2 MB in total.

The email can't be sent through the API.

Make sure the email was activated in the Overview step and shows as Active under Email → Transactional.

I can't find the transactional events on the profile.

Search in the section the email was created in. Make sure to use the correct identifier (email or CRM ID) for best match.


What's next?

  • Read more about API keys in Account settings.

  • Learn about unique identifiers and keyspaces in Audience.


Need a hand? Open the in-platform chat or contact your Apsis support team.

Did this answer your question?