Blog

  • Transactional email analytics

    This guide explains how to access and use transactional email reports in Sender to monitor delivery health, track engagement, and review individual sending events.

    Where to find this report

    Transactional email analytics are available under the Transactional emails section in the left sidebar. This section contains two reporting pages accessible from the sub-navigation:

    Transactional emails → Metrics opens the Transactional overview page. This is the primary reporting view, displaying summary metric cards and a time-series chart for all transactional sending activity. You can filter by Event type, Domain, and Campaign, and adjust the date range and frequency.

    Transactional emails → Logs opens the Latest events log page. This is the event-level reporting view, displaying a table of individual transactional events with details for each email sent, opened, clicked, bounced, unsubscribed, or marked as spam.

    You can also jump from the Transactional overview page directly to filtered log views by clicking any of the linked metric cards — Total opens, Total clicks, Unsubscribes, Hard bounces, Soft bounces, or Spam reports — which open the Logs page pre-filtered to that event type.

    Steps to access and filter transactional reports

    Step 1 — Open the Transactional overview page

    Click Transactional emails in the left sidebar, then select Metrics from the sub-navigation. The Transactional overview page loads with summary cards across the top row: Total emails sent, Total delivered, Total opens, and Total clicks. A time-series chart plots sending activity below. A second row of cards shows Unsubscribes, Hard bounces, Soft bounces, and Spam reports. By default, data displays for the last 7 days at an Hourly frequency.

    Step 2 — Filter and adjust the date range

    Use the three filter dropdowns at the top left to narrow the data. Event type lets you check or uncheck specific event categories — Emails sent, Opens, Clicks, Bounces, Unsubscribes, and Spam reports — to control what appears on the chart. Domain filters by sending domain, and Campaign filters by a specific transactional template. To change the time period, click the date range selector at the top right and choose a preset such as Last 7 days, Last 30 days, or Last 12 months, or define a Custom range with specific start and end dates. Switch between Hourly, Daily, Weekly, and Monthly frequency toggles to change the chart granularity.

    Step 3 — Review individual events in the Logs page

    Click Logs in the sub-navigation to open the Latest events log. This page displays a table with columns for Event, Recipient, Subject, Template, and Date / time. Use the Search field to find events by recipient address or subject line. Apply the Event type, Domain, and Campaign filters to isolate specific event categories — for example, select Bounces from the Event type dropdown to see only bounce events. Adjust the date range to control the reporting window. Use the View dropdown at the bottom to change the number of rows displayed per page (10, 15, 20, 25, or 50).

    Step 4 — Drill down from overview metrics to log details

    On the Transactional overview page, click any linked metric card to jump directly to the Logs page with the corresponding event filter pre-applied. Total opens, Total clicks, Unsubscribes, Hard bounces, Soft bounces, and Spam reports all link to filtered log views. This lets you move from an aggregate count to the individual events behind it without manually setting filters on the Logs page.

    Available metrics

    Total emails sent — The total number of transactional emails sent during the selected date range. Displayed as a summary card on the Transactional overview page. This count includes all transactional emails regardless of delivery outcome.

    Total delivered — The number of transactional emails successfully delivered to recipient inboxes during the selected period. Displayed as a summary card on the Transactional overview page.

    Total opens — The number of open events recorded for transactional emails in the selected period. Displayed as a clickable summary card on the Transactional overview page; clicking it opens the Logs page filtered to open events.

    Total clicks — The number of click events recorded for transactional emails in the selected period. Displayed as a clickable summary card on the Transactional overview page; clicking it opens the Logs page filtered to click events.

    Unsubscribes — The number of recipients who unsubscribed via a transactional email during the selected period. Displayed as a summary card in the second row of the Transactional overview page with a link to the corresponding log entries.

    Hard bounces — The number of transactional emails that permanently failed delivery during the selected period. Displayed as a summary card in the second row of the Transactional overview page with a link to the filtered Logs view.

    Soft bounces — The number of transactional emails that temporarily failed delivery during the selected period. Displayed as a summary card in the second row of the Transactional overview page with a link to the filtered Logs view.

    Spam reports — The number of recipients who reported a transactional email as spam during the selected period. Displayed as a summary card in the second row of the Transactional overview page with a link to the filtered Logs view.

    How to identify performance issues

    Rising hard bounce rate — If the Hard bounces count increases over consecutive periods, it may indicate outdated or invalid recipient addresses in your transactional triggers. Filter the Logs page by Bounces to identify which recipients and templates are affected, and review the source systems feeding those addresses.

    Soft bounce spikes — A sudden increase in Soft bounces can signal temporary delivery issues such as recipient mailbox limits or server throttling. Compare soft bounce counts across Daily or Weekly views to determine whether the pattern is sustained or isolated to a specific time window.

    Spam report increases — Growth in the Spam reports metric suggests recipients do not recognize or want the transactional emails they are receiving. Filter by Campaign to isolate which template is generating complaints, and review the content and sending frequency for that template.

    Low open counts relative to delivered — If Total opens is consistently low compared to Total delivered, transactional emails may be landing in spam folders or recipients may not find the subject lines relevant. Filter by Domain to check whether the issue is isolated to a specific sending domain.

    Declining click engagement — If Total clicks trends downward while Total opens remains stable, the email content or call-to-action may need attention. Switch to Weekly or Monthly frequency to confirm the trend is sustained before making changes.

    Report tips

    Use the Campaign filter to isolate template performance — Select a specific template from the Campaign dropdown on either the Metrics or Logs page to view metrics for that template alone. This helps you compare the performance of different transactional email types such as password resets, order confirmations, or verification emails.

    Switch frequency to match your analysis window — Use Hourly when investigating a specific incident or same-day issue. Use Daily or Weekly for trend analysis over longer periods. Monthly is useful for high-level reporting and identifying seasonal patterns.

    Click metric cards to drill into details — Instead of manually configuring filters on the Logs page, click the linked metric cards on the Transactional overview page to jump directly to a pre-filtered log view for that event type.

    Bookmark filtered views — After applying filters on the Metrics or Logs page, the URL updates to reflect your selections. Bookmark the URL to return to the same filtered view without reconfiguring filters each time.

    Review logs regularly for delivery anomalies — Check the Latest events log page periodically to spot unexpected bounce or spam events before they accumulate into larger delivery problems.

    Common issues

    Metric cards show zero despite active sending → The date range may not cover the period when emails were sent. Click the date range selector and choose a wider range such as Last 30 days or set a Custom range that includes your sending dates.

    Logs page shows "No data found" → Verify that the Event type, Domain, and Campaign filters are not excluding the events you expect. Clear all filters and widen the date range to confirm whether any data exists for the selected period.

    Chart does not update after changing filters → Ensure you have applied the filter selections. Some filter dropdowns require you to click outside the dropdown to confirm. Refresh the page if the chart still does not reflect your selections.

    Clicking a metric card opens an empty log → The linked log view inherits the date range from the overview page. If the date range is too narrow or no events of that type occurred in the period, the log table will be empty. Widen the date range on the Logs page to check for data outside the original window.

    "Select a single day to display data hourly" tooltip appears → The Hourly frequency requires a single-day date range. Select one specific day in the date range picker, or switch to Daily, Weekly, or Monthly frequency for multi-day ranges.

    FAQs

    Can I filter transactional metrics by a specific template? Yes. On the Transactional overview page, click the Campaign dropdown and select the template name. The chart and all summary cards update to show metrics for that template only. The same Campaign filter is available on the Logs page.

    How often are transactional report metrics updated? Metrics update in near real-time. Refresh the page to see the latest data. On the Latest events log page, individual events appear shortly after the email is sent or a recipient event occurs.

    Can I search for a specific recipient in the logs? Yes. Use the Search field at the top of the Latest events log page and enter a recipient email address. The table filters to show only events associated with that address.

    What event types are available in the Event type filter? On the Transactional overview page, the Event type filter includes checkboxes for Emails sent, Opens, Clicks, Bounces, Unsubscribes, and Spam reports. On the Logs page, the same categories appear as selectable options in the Event type dropdown.

    Can I compare transactional metrics across two time periods? Yes. Open the date range picker on the Transactional overview page and enable the Compare toggle. Select two date ranges to view a side-by-side comparison of your transactional metrics.

    What is the difference between the Metrics page and the Logs page? The Metrics page shows aggregated summary cards and a time-series chart for overall transactional sending performance. The Logs page shows individual event-level records in a table, with details for each specific email event including the recipient, subject, template, and timestamp.

  • Common API errors

    This guide helps you diagnose and resolve the most frequently encountered HTTP error responses when using Sender’s REST API.

    Symptoms

    Your API request returns a 4xx or 5xx HTTP status code instead of the expected 200 or 201 response.

    The response body contains a “success”: false value or a “message” field describing the failure.

    The errors object in the response body lists one or more fields that failed validation.

    Your application receives no response or a timeout when calling https://api.sender.net/v2/ endpoints.

    Possible Causes

    Missing or invalid API token — The Authorization: Bearer {token} header is absent, malformed, or contains a revoked token, resulting in a 401 Unauthorized response.

    Malformed request body or invalid parameters — Required fields are missing or contain incorrect data types, causing a 400 Bad Request or 422 Bad request parameters response with details in the message or errors field.

    Rate limit exceeded — Too many requests were sent in a short period, triggering a 429 Too Many Requests response with rate limit details in the X-RateLimit-Limit, X-RateLimit-Remaining, and Retry-After headers.

    Incorrect endpoint or resource ID — The request targets a nonexistent URL or references a resource ID that does not exist, returning a 404 Not Found response.

    Server-side issue — A 5xx response indicates a temporary problem on Sender’s servers, not an issue with your request.

    Steps to Resolve

    Step 1 — Fix authentication errors (401 Unauthorized)

    If the API returns 401, verify that your request includes the Authorization header in the format Authorization: Bearer {token}. Confirm that the token has not been revoked by navigating to Account settings → API access tokens in your Sender dashboard. If the token is missing from the list, generate a new one and update the header in your application. Also verify that the request is sent over HTTPS — plain HTTP requests will fail.

    Step 2 — Resolve validation errors (400 and 422)

    For a 400 response, inspect the message field in the response body to identify the issue. For a 422 response, inspect the errors object — each key corresponds to a field name, and its value describes what is invalid. For example, “email”: [“Required value, email”] means the email field was missing or not a valid email address. Correct the flagged fields in your request body and ensure required parameters like email for POST /v2/subscribers or title for POST /v2/groups are included.

    Step 3 — Handle rate limiting (429 Too Many Requests)

    When you receive a 429 response, read the Retry-After header to determine how many seconds to wait before retrying. Check X-RateLimit-Limit for your maximum requests per minute and X-RateLimit-Remaining for how many you have left. Implement exponential backoff in your code so that consecutive rate limit hits progressively increase the delay between retries. Avoid sending bulk requests in tight loops.

    Step 4 — Correct endpoint and resource errors (404 Not Found)

    A 404 response means the requested resource does not exist. Verify that the endpoint URL matches the documented paths — for example, https://api.sender.net/v2/subscribers not https://api.sender.net/v2/subscriber. If the endpoint includes a resource ID such as POST /v2/campaigns/{id}/send, confirm the {id} value corresponds to an existing resource in your account. Check for typos and ensure you are using the v2 base URL.

    Step 5 — Address server errors (5xx)

    A 5xx response indicates a server-side issue on Sender’s end. Wait 30–60 seconds and retry the same request. If the error persists across multiple retries, contact Sender support at [email protected] with the full request details, response body, and timestamps. Do not modify your request — the issue is not caused by your input.

    Error Response Reference

    400 — Bad Request — The request structure is valid but contains a logical error. The response body includes “success”: false and a “message” field explaining the issue, such as “You must activate workflow first”. Review the message value and correct the precondition or parameter it references.

    401 — Unauthorized — Authentication failed. The Authorization: Bearer {token} header is missing, malformed, or contains an invalid token. Verify the token exists in Account settings → API access tokens and that the header format is correct.

    404 — Not Found — The requested resource or endpoint does not exist. Verify the URL path and any resource IDs included in the request. Ensure you are using the https://api.sender.net/v2/ base URL.

    422 — Bad Request Parameters — One or more parameters failed validation. The response body contains “message”: “The given data was invalid.” and an errors object where each key is a field name and each value is an array of validation messages. Fix the fields listed in the errors object and resend.

    429 — Too Many Requests — The rate limit has been exceeded. The response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and Retry-After headers. Wait the number of seconds specified in Retry-After before sending another request.

    5xx — Server Error — A server-side error occurred on Sender’s infrastructure. Retry the request after a short delay. If 5xx errors persist, contact Sender support with the request method, endpoint, and response timestamps.

    How to Verify the Fix

    After applying the fix, resend the original request and confirm you receive a 200 or 201 status code. Inspect the response body for “success”: true and the expected data object. If the request created or updated a resource (such as a subscriber or group), navigate to the corresponding section in your Sender dashboard to confirm the change is reflected. If the error persists after following the resolution steps, contact Sender support with the request details and full response body.

    Debugging Tips

    Log full responses — Always log the HTTP status code, response headers, and the complete response body for every API call. This captures the message and errors fields needed for diagnosis.

    Validate headers before sending — Confirm every request includes Authorization: Bearer {token}, Content-Type: application/json, and Accept: application/json. Missing any of these headers is a common source of 401 and 400 errors.

    Test with cURL first — Reproduce the failing request using curl on the command line. This isolates whether the issue is in your application code or the request itself.

    Monitor rate limit headers — Track X-RateLimit-Remaining in successful responses to anticipate 429 errors before they occur. Throttle your requests when the remaining count approaches zero.

    Use HTTPS exclusively — All requests to https://api.sender.net/v2/ must use HTTPS. Requests sent over plain HTTP will fail silently or return unexpected errors.

    Related Issues

    Subscriber creation returns 422 with field-specific errors → The email field is either missing or not a valid email address. Inspect the errors object in the response to identify which parameter failed and correct its value.

    Campaign send returns 400 with a precondition message → The campaign may not be fully configured. Check the message field for details such as “You must activate workflow first” and complete the required setup before retrying the POST /v2/campaigns/{id}/send request.

    Pagination requests return empty data arrays → The requested page may exceed the total number of available pages. Check the meta.last_page value in previous responses and ensure your ?page parameter does not exceed it.

    FAQs

    How do I find the specific field that caused a 422 error?

    Inspect the errors object in the response body. Each key in the object corresponds to a field name, and the value is an array describing what is invalid. For example, “email”: [“Required value, email”] means the email field was missing or malformed.

    My API token was working yesterday but now returns 401. What happened?

    The token may have been revoked or deleted. Go to Account settings → API access tokens and verify the token still exists. If not, create a new one and update your application’s Authorization header.

    How long should I wait after a 429 rate limit error?

    Check the Retry-After header in the response. It specifies the number of seconds to wait before retrying. Implement exponential backoff in your code so that consecutive rate limit hits increase the wait time progressively.

    The API returns 200 but the data in Sender does not update. Why?

    A 200 response confirms the request was accepted, but the data may take a moment to propagate. Refresh the relevant page in your Sender dashboard. If the data still does not appear, verify that the request body contained the correct field values and that you targeted the right resource ID.

    I keep getting 500 Internal Server Error. Is it my fault?

    A 500 error typically indicates a server-side issue on Sender’s end, not a problem with your request. Retry the request after a short wait. If 500 errors persist across multiple requests, contact Sender support with the request details and timestamps.

  • Automation performance reports

    This guide explains how to access and read performance reports for your automation workflows and transactional emails in Sender. Use these reports to evaluate workflow effectiveness, identify underperforming steps, and monitor transactional delivery health.

    Where to find this report

    Automation reports are accessible from two locations. On the Automations list page, each workflow row displays summary Stats — emails sent, opens, and clicks — giving you a quick performance snapshot without opening the workflow. To see detailed data, click the edit icon to open the workflow builder, where the right-side panel displays either the Workflow report or an individual Email report depending on what you select on the canvas.

    Transactional email reports live under Transactional emails → Metrics, which opens the Transactional overview page. The Logs page in the same sidebar provides individual event-level data.

    Steps to access automation and transactional reports

    Step 1 — Review workflow-level performance on the Automations list

    Go to Automations from the main sidebar. Each workflow row shows aggregated Stats: total emails sent, opens percentage, and clicks percentage. Use the Filter dropdown to switch between All, Active, and Draft workflows. Use the Sort button or the Find workflow by name search bar to locate a specific automation. This view lets you compare performance across all workflows at a glance.

    Step 2 — Open the Workflow report in the builder

    Click the edit icon on any active workflow to open the workflow builder. Click an empty area of the canvas background to display the Workflow report panel on the right side. This panel shows aggregated metrics for the entire automation, including Completed automation, Subscribers in automation, and Total emails sent. Use these figures to understand overall throughput and how many contacts have finished the sequence.

    Step 3 — View step-level Email reports

    Click any email step on the canvas to open its Email report panel on the right side. This panel displays per-step performance: Emails sent, Open rate, Click rate, Unsubscribe rate, and Bounce rate. The Subscribers currently at this step counter shows how many contacts are waiting at that point in the workflow. Click Full report for a detailed breakdown of that step's data.

    Step 4 — Access the Transactional overview page

    Navigate to Transactional emails → Metrics to open the Transactional overview page. The top row of summary cards displays Total emails sent, Total delivered, Total opens, and Total clicks. Below the chart, a second row shows Unsubscribes, Hard bounces, Soft bounces, and Spam reports. Use the Event type, Domain, and Campaign filters to narrow the data. Switch between Hourly, Daily, Weekly, and Monthly frequency views, and set a custom date range using the date picker.

    Step 5 — Review individual events on the Logs page

    Click Logs in the transactional sidebar to open the Latest events log page. Each row shows the Event type, Recipient, Subject, Template, and Date / time. Use the Event type filter to isolate specific events such as Bounces or Spam reports. Apply the Domain and Campaign filters or the Search bar to find specific recipients or subjects. Adjust the date range to control the time window displayed.

    Available metrics

    Emails sent (automation list) — The total number of emails sent across all steps in the workflow. Displayed in the Stats column on the Automations list page.

    Opens (automation list) — The open rate percentage for the entire workflow. Displayed in the Stats column on the Automations list page next to emails sent.

    Clicks (automation list) — The click rate percentage for the entire workflow. Displayed in the Stats column on the Automations list page.

    Completed automation — The number of subscribers who have finished all steps in the workflow. Displayed in the Workflow report panel when you click the canvas background.

    Subscribers in automation — The number of contacts currently active inside the workflow. Displayed in the Workflow report panel.

    Total emails sent (workflow) — The cumulative count of all emails sent by the automation across every step. Displayed in the Workflow report panel.

    Emails sent (step-level) — The number of emails sent by a specific email step. Displayed in the Email report panel when you click an email step.

    Open rate (step-level) — The percentage of recipients who opened the email at that step. Displayed in the Email report panel.

    Click rate (step-level) — The percentage of recipients who clicked a link in the email at that step. Displayed in the Email report panel.

    Unsubscribe rate (step-level) — The percentage of recipients who unsubscribed after receiving the email at that step. Displayed in the Email report panel.

    Bounce rate (step-level) — The percentage of emails that bounced at that step. Displayed in the Email report panel.

    Subscribers currently at this step — The number of contacts waiting at a specific step in the workflow. Displayed in the Email report panel for each email step.

    Total emails sent (transactional) — The total number of transactional emails sent in the selected period. Displayed as a summary card on the Transactional overview page.

    Total delivered (transactional) — The number of transactional emails successfully delivered. Displayed as a summary card on the Transactional overview page.

    Total opens (transactional) — The number of transactional emails opened. Displayed as a summary card on the Transactional overview page.

    Total clicks (transactional) — The number of link clicks in transactional emails. Displayed as a summary card on the Transactional overview page.

    Hard bounces — The count of transactional emails that permanently failed delivery. Displayed in the secondary metric row on the Transactional overview page.

    Soft bounces — The count of transactional emails that temporarily failed delivery. Displayed in the secondary metric row on the Transactional overview page.

    Unsubscribes (transactional) — The number of recipients who unsubscribed from transactional emails. Displayed in the secondary metric row on the Transactional overview page.

    Spam reports — The number of recipients who marked transactional emails as spam. Displayed in the secondary metric row on the Transactional overview page.

    How to identify performance issues

    Step-level drop-off — Compare the Subscribers currently at this step count across consecutive email steps. A large gap between one step and the next indicates contacts are leaving the workflow at that point, potentially due to a long delay, an unsubscribe, or a condition filtering them out.

    Declining open rates across steps — If later email steps show progressively lower Open rate values compared to earlier steps, your subject lines may be losing relevance or recipients may be disengaging over time. Review subject lines and timing for steps with the steepest drops.

    High bounce rate on a specific step — A step with a noticeably higher Bounce rate than other steps may indicate a list quality issue with the segment entering the automation, or a deliverability problem with that particular email. Check subscriber sources feeding into the trigger.

    Rising transactional hard bounces — On the Transactional overview page, a sustained increase in Hard bounces over time signals that your recipient lists may contain invalid addresses. Switch to Daily or Weekly frequency to spot upward trends and investigate the source of new addresses.

    Spam report spikes — A sudden increase in Spam reports on the Transactional overview page suggests recipients are not expecting the emails. Use the Campaign filter to isolate which template is generating reports, and review its content and sending frequency.

    Low click rate with normal open rate — If a step shows a healthy Open rate but a low Click rate, the email content or call-to-action may not be compelling enough. This pattern points to a content optimization opportunity rather than a deliverability problem.

    Report tips

    Filter the automation list by status — Use the Filter dropdown on the Automations page to show only Active workflows. This removes draft clutter and lets you focus on workflows that are generating live data.

    Use the Compare toggle for transactional trends — In the date range picker on the Transactional overview page, enable the Compare toggle to compare the current period against a previous one. This makes it easier to spot changes in delivery or engagement patterns.

    Check step-level metrics sequentially — Click each email step in order from top to bottom in the workflow builder to review how performance changes across the sequence. This step-by-step review is the most reliable way to find the exact point where engagement drops.

    Switch frequency views for different insights — On the Transactional overview page, use Hourly to investigate a specific day's sending pattern, Daily or Weekly for short-term trends, and Monthly for long-term performance tracking.

    Use the Campaign filter to isolate templates — On both the Transactional overview and Latest events log pages, select a specific template from the Campaign dropdown to see metrics for that template only. This is essential when you have multiple transactional email types and need to evaluate each one separately.

    Common issues

    Automation stats show 0 emails sent → The workflow is in Draft status and has not been activated. Click Activate on the workflow to begin sending. Stats populate only after the automation starts processing subscribers.

    Workflow report panel not visible → You may have an email step or trigger selected. Click an empty area of the canvas background to deselect all steps and display the Workflow report panel on the right side.

    Transactional metrics show no data → No transactional emails have been sent in the selected date range. Adjust the date range using the date picker, or confirm that your transactional sending is configured under Setup instructions in the transactional sidebar.

    Event type filter not narrowing results → On the Transactional overview page, the Event type filter uses checkboxes. Make sure you have unchecked the event types you want to exclude. All event types are selected by default.

    Logs page shows "No data found" → The selected date range or filters may be too narrow. Expand the date range or remove filters from Event type, Domain, and Campaign to see all logged events.

    FAQs

    Can I see performance for a single email step in an automation?

    Yes. Open the automation in the workflow builder and click any email step. The Email report panel displays Emails sent, Open rate, Click rate, Unsubscribe rate, and Bounce rate for that specific step. Click Full report for detailed data.

    How do I find drop-off points in my automation?

    Compare the Subscribers currently at this step count across consecutive steps. A large gap between one step and the next suggests contacts are dropping off — possibly due to a long delay, an unsubscribe, or a condition filtering them out.

    Can I filter transactional metrics by a specific template?

    Yes. On the Transactional overview page, use the Campaign dropdown and select the template name. The chart and summary cards update to show metrics for that template only.

    How often are automation and transactional report metrics updated?

    Metrics update in near real-time. Refresh the page to see the latest data. For transactional logs, individual events appear shortly after the email is sent or an event occurs.

    What is the difference between the automation Workflow report and individual step reports?

    The Workflow report shows aggregated metrics for the entire automation — Completed automation, Subscribers in automation, and Total emails sent. Individual step reports show per-email performance (sends, opens, clicks, bounces, unsubscribes) for each specific email in the sequence.

    Can I compare transactional performance across two time periods?

    Yes. Click the date range selector on the Transactional overview page and enable the Compare toggle. Set the two date ranges you want to compare and click Apply. The chart and summary cards display both periods for side-by-side analysis.

    How do I filter transactional logs to show only bounces?

    On the Latest events log page, click the Event type dropdown and select Bounces. The table updates to show only bounce events, with the Recipient, Subject, Template, and Date / time for each.

  • Campaign analytics explained

    This guide explains how to find, navigate, and understand campaign performance data across the reporting interfaces in Sender's dashboard.

    Where to find this report

    Campaign analytics in Sender are spread across several locations rather than a single reporting page. The primary entry points are:

    In the Sender dashboard, go to Dashboard in the left sidebar to see your account-level performance summary. This page displays the Traffic and reach report with summary metric cards, a time-series chart, and secondary metric cards for bounces, unsubscribes, and spam. Below that, the Subscribers growth section tracks audience changes over time, followed by a Marketing calendar.

    To view individual campaign reports, go to Email campaigns in the left sidebar. The campaign list shows each campaign with its Stats columns — delivered, opened, and clicks. Click the report icon on any sent campaign to open its full Campaign overview report.

    For automation performance, go to Automations in the left sidebar. The automation list displays aggregated stats (emails sent, opens, clicks) for each workflow.

    For transactional email metrics, go to Transactional emails in the left sidebar. The Transactional overview page provides summary cards, a time-series chart, and filter controls for event type, domain, and campaign.

    Steps to navigate campaign analytics

    Step 1 — Open the Dashboard overview

    Click Dashboard in the left sidebar. At the top of the page, the Traffic and reach report panel displays summary cards for Total emails sent, Total delivered, Total opens, and Total clicks. Below the cards, a time-series chart plots these three metrics over the selected date range. A second row of cards shows Total unsubscribers, Total bounces, Bounce rate, Total spams, Unsubscribe rate, Hard bounce rate, Soft bounce rate, and Average spam rate.

    Step 2 — Adjust the date range and dashboard panels

    Click the date range picker in the top-right corner of the Dashboard page. Select a preset range such as Last 7 days, Last 30 days, Last 3 months, or Last year, or enter a custom date range using the Custom range fields. Toggle the Compare switch to compare the current period against a previous one. Click Apply to update all dashboard panels. Use the Overview settings dropdown next to the date picker to show, hide, or reorder panels like Traffic and reach report, Subscribers growth, and Marketing calendar.

    Step 3 — Open an individual campaign report

    Click Email campaigns in the left sidebar. Use the search bar to find a campaign by name, or click Filter to narrow the list by status — All, Draft, Scheduled, Sending, or Sent. Locate a sent campaign and click its report icon in the Actions column to open the Campaign overview page. The Statistics section at the top displays cards for total emails sent, total emails delivered, opened, unique clicks, hard bounced, soft bounced, unsubscribed, and spam reports.

    Step 4 — Explore campaign report tabs

    On the Campaign overview page, use the left-side navigation panel to switch between report views. Overview shows the email settings, statistics cards, an Ecommerce section (with Total revenue, Number of orders, Revenue per customer, and ROI), and Opens and clicks by day and Opens and clicks by hour charts. Clicks report displays a visual click map of your email. Subscriber actions expands to show filterable lists broken down by Opens, Clicks, Hard bounces, Soft bounces, Unsubscribes, Spam reports, Unopens, and Purchases, each with a count.

    Step 5 — Review automation workflow stats

    Click Automations in the left sidebar. The automation list shows each workflow with Stats columns for emails sent, opens, and clicks. Click the edit icon on any workflow to open the automation builder, where each Send an email step in the workflow can be clicked to view its individual performance data in the right-side panel. Active workflows display step-level metrics including sends, opens, clicks, bounces, and unsubscribes.

    Step 6 — Navigate transactional email metrics

    Click Transactional emails in the left sidebar. The Transactional overview page opens, showing summary cards for Total emails sent, Total delivered, Total opens, and Total clicks, a time-series chart, and secondary cards for Unsubscribes, Hard bounces, Soft bounces, and Spam reports. Use the Event type dropdown to filter the chart by specific events such as Emails sent, Opens, Clicks, Bounces, Unsubscribes, or Spam reports. Filter further by Domain or Campaign, and switch granularity between Hourly, Daily, Weekly, and Monthly.

    Step 7 — View the transactional events log

    In the Transactional emails section, click Logs in the left sidebar to open the Latest events log. This page displays a table with columns for Event, Recipient, Subject, Template, and Date / time. Use the search bar to find events by recipient or subject, and filter by Event type, Domain, or Campaign. Adjust the date range picker to narrow results to a specific time period.

    Step 8 — Export dashboard data

    On the Dashboard page, click the Export button in the top-right area, next to the date range picker. This exports the dashboard metrics for the currently selected date range. On individual campaign reports, use the Print report button in the top-right corner of the Campaign overview page to generate a printable version of the report.

    Metrics explained

    Total emails sent — The total number of emails dispatched from your account during the selected period. This counts every send attempt, regardless of whether the email was delivered, bounced, or deferred.

    Total delivered — The number of emails that were successfully accepted by the recipient's mail server. This does not guarantee the email reached the inbox — it may have been routed to spam.

    Total opens — The number of times recipients opened your email, tracked via an embedded tracking pixel. A single recipient opening the same email multiple times may increment this count.

    Total clicks — The total number of times links in your email were clicked. This includes all clicks, so one recipient clicking the same link twice counts as two clicks.

    Unique clicks — The number of individual recipients who clicked at least one link in the email. Each recipient is counted only once regardless of how many links they clicked or how many times.

    Opened (rate) — The percentage of delivered emails that were opened at least once. Calculated as opens divided by total delivered, displayed as a percentage.

    Hard bounced (rate) — The percentage of sent emails that permanently failed delivery, typically because the recipient address does not exist or the domain is invalid. Persistent high hard bounce rates can harm sender reputation.

    Soft bounced (rate) — The percentage of sent emails that temporarily failed delivery due to issues like a full mailbox or a temporarily unavailable server. Soft bounces may succeed on a retry.

    Unsubscribed (rate) — The percentage of delivered emails where the recipient clicked the unsubscribe link. Calculated as unsubscribes divided by total delivered.

    Spam reports — The number of recipients who marked your email as spam. Even small numbers here are worth monitoring, as spam complaints directly affect sender reputation.

    Bounce rate — The combined percentage of hard and soft bounces relative to total emails sent. Displayed on the Dashboard overview as an aggregate metric across all campaigns in the date range.

    Average spam rate — The average percentage of spam complaints across all campaigns in the selected period. Displayed on the Dashboard page.

    Report tips

    Use status filters on the campaign list — Click Filter on the Email campaigns page and select Sent to show only campaigns with performance data, hiding drafts and scheduled sends from the list.

    Compare periods on the Dashboard — Toggle the Compare switch in the date range picker to see how current metrics perform against a previous period. This helps identify trends without manually noting earlier numbers.

    Check the clicks report for link engagement — On any sent campaign's report, switch to the Clicks report tab to see a visual click map of your email, showing which links received the most attention.

    Use the Subscriber actions breakdown — Expand the Subscriber actions section in a campaign report to see exactly which recipients opened, clicked, bounced, unsubscribed, or reported spam. This is useful for list hygiene and segmentation.

    Adjust transactional chart granularity — On the Transactional overview page, switch between Hourly, Daily, Weekly, and Monthly views to match the level of detail you need for your analysis.

    Common issues

    Campaign shows dashes instead of stats → The campaign is still in Draft, Scheduled, or Sending status. Stats only populate after emails have been sent and recipient interactions are recorded. Wait until the campaign status changes to Sent.

    Open rate appears unusually low → Open tracking relies on a tracking pixel embedded in the email. If a recipient's email client blocks images by default, the open is not recorded. Actual opens may be higher than reported.

    Dashboard metrics do not match the campaign report → The Dashboard shows aggregated metrics across all campaigns within the selected date range, while a campaign report shows data for that single campaign only. Verify that the Dashboard date range includes the campaign's send date.

    Transactional overview shows no data → Check that the date range is set to a period when transactional emails were sent. Also verify that the Event type, Domain, and Campaign filters are not excluding the data you expect to see.

    Ecommerce section is blank on the campaign report → The Ecommerce data requires a connected store integration. If no ecommerce integration is installed, the Total revenue, Number of orders, Revenue per customer, and ROI fields remain empty.

    FAQs

    How often are report metrics updated? Most metrics update in near real-time. Refresh the page to see the latest data. Some aggregated metrics on the Dashboard overview may have a short delay.

    Can I export my report data? Yes. On the Dashboard, click the Export button in the top-right area to download metrics for the selected date range. On individual campaign reports, use the Print report button to generate a printable version of the campaign's performance data.

    Why does my open rate seem low? Open tracking relies on a tracking pixel embedded in the email. If a recipient's email client blocks images by default, the open is not recorded. This means actual opens may be higher than reported.

    What is the difference between the Dashboard and individual campaign reports? The Dashboard provides an account-level summary of recent performance across all sending channels for the selected date range. Individual campaign reports, accessed through the Email campaigns list, show detailed metrics, click maps, subscriber action breakdowns, and engagement charts for a single campaign.

    Can I see reports for a single automation email? Yes. Go to Automations, open the workflow, and click on any Send an email step. The right-side panel displays that step's individual performance metrics, including sends, opens, clicks, bounces, and unsubscribes.

    How do I filter transactional email reports by event type? On the Transactional overview page, click the Event type dropdown at the top of the page. Check or uncheck the event types you want to include — Emails sent, Opens, Clicks, Bounces, Unsubscribes, and Spam reports — to update the chart and summary cards accordingly.

    Can I see which subscribers performed specific actions on a campaign? Yes. Open a sent campaign's Campaign overview report and expand the Subscriber actions section in the left navigation. Select a specific action such as Opens, Clicks, or Unsubscribes to view the list of subscribers who performed that action.

  • Open rate vs click rate

    This guide explains how open rate and click rate are defined, calculated, and interpreted in Sender, and how these two metrics relate to each other when evaluating email performance.

    What these metrics measure

    Open rate measures the percentage of delivered emails that were opened by recipients. It indicates whether your subject line, sender name, and send timing were effective enough to prompt recipients to view your email. Click rate measures the percentage of delivered emails that received at least one link click. It indicates whether your email content, calls to action, and link placement were compelling enough to drive recipient interaction beyond simply opening the message.

    Together, these two metrics represent two distinct stages of email engagement — initial attention (open) and active response (click).

    Metric definitions

    Open rate — Calculated as the number of unique opens divided by the number of delivered emails, expressed as a percentage. This metric appears as opened in the Statistics section of the Campaign overview page, displayed as a percentage with the unique open count in parentheses. It is also shown as opens (percentage) in the Automations list and as Total opens (count) on the Dashboard under Traffic and reach report.

    Click rate — Calculated as the number of unique clicks divided by the number of delivered emails, expressed as a percentage. This metric appears as unique clicks in the Statistics section of the Campaign overview page, displayed as a percentage with the unique click count in parentheses. It is also shown as clicks (percentage) in the Automations list and as Total clicks (count) on the Dashboard under Traffic and reach report.

    Click-to-open rate (CTOR) — Calculated as the number of unique clicks divided by the number of unique opens, expressed as a percentage. While Sender does not display CTOR as a standalone metric card, you can derive it from the opened and unique clicks values shown in the Statistics section of any Campaign overview page. CTOR isolates content engagement among recipients who already opened the email.

    How to interpret the data

    Open rate between 15–25% — Generally considered a healthy range for marketing emails, though benchmarks vary significantly by industry, list size, and audience type. Rates in this range suggest that your subject lines and sender reputation are performing adequately.

    Open rate below 10% — May indicate subject line issues, poor sender reputation, list fatigue, or deliverability problems where emails are landing in spam folders rather than the inbox. Investigate whether your hard bounced or soft bounced rates in the Statistics section are elevated, as delivery failures reduce the denominator and can mask the underlying engagement problem.

    Open rate above 40% — Unusually high open rates may reflect a highly engaged niche audience, or they may be inflated by Apple Mail Privacy Protection pre-loading tracking pixels. Cross-reference with unique clicks to determine whether the high open rate corresponds to genuine engagement.

    Click rate between 2–5% — Generally considered a healthy range for marketing emails. This indicates that a meaningful portion of your delivered audience is interacting with your content and links.

    Click rate below 1% — Suggests that email content, link placement, or calls to action are not resonating with recipients. If your opened rate is healthy but unique clicks are low, the issue is likely with content relevance or email design rather than deliverability or subject lines.

    Click rate above 5% — Indicates strong content engagement. Compare this metric across campaigns in the Email campaigns list using the clicks column to identify which content types or offers generate the highest interaction.

    CTOR between 10–20% — Considered a typical range. A CTOR in this range means that among recipients who opened, a reasonable proportion found the content compelling enough to click. Benchmarks vary by industry and email type.

    CTOR below 5% — Indicates that while recipients are opening the email, the content is not driving clicks. This points to a disconnect between what the subject line promises and what the email delivers, or to weak calls to action.

    How metrics relate to each other

    Open rate as a prerequisite for click rate — A recipient must open an email before they can click a link within it, so click rate is always equal to or lower than open rate. If open rate is low, click rate will be constrained regardless of content quality. Improving open rate by refining subject lines and send timing creates a larger pool of recipients who can then engage with your content.

    Click rate vs CTOR for diagnosing issues — If click rate is low but CTOR is healthy, the problem lies in getting more people to open the email rather than in the email content itself. If both click rate and CTOR are low, the content or calls to action need improvement. Comparing the opened and unique clicks values in the Statistics section helps you isolate whether the bottleneck is at the open stage or the click stage.

    Open rate and deliverability — Open rate is calculated against delivered emails, not sent emails. If your total emails delivered count in the Statistics section is significantly lower than total emails sent, a high bounce rate is reducing your delivered volume. A seemingly healthy open rate may mask the fact that many intended recipients never received the email at all.

    Click rate and unsubscribe rate — Campaigns with consistently low unique clicks and rising unsubscribed values (both visible in the Statistics section) may indicate that your audience is disengaged and beginning to opt out. Monitoring both metrics together helps identify list fatigue before it escalates.

    Opens and clicks over time — The Opens and clicks by day and Opens and clicks by hour charts on the Campaign overview page show how engagement is distributed after sending. A concentrated spike in opens followed by minimal clicks may indicate that the email captured initial attention but failed to sustain interest through the content.

    Tracking limitations

    Pixel-based open tracking — Sender tracks opens by embedding an invisible tracking pixel in each email. The open is registered when the recipient's email client loads this pixel. If a recipient reads the email with images disabled or in a plain-text client, the open is not recorded. This means open rate may undercount actual readership.

    Apple Mail Privacy Protection — Apple Mail Privacy Protection pre-loads tracking pixels through proxy servers for Apple Mail users, regardless of whether the recipient actively views the email. This inflates opened values in the Statistics section. If a significant portion of your audience uses Apple Mail, treat open rate as directional and rely more heavily on unique clicks and CTOR for accurate engagement measurement.

    Link-based click tracking — Sender tracks clicks by wrapping links in your email with tracking redirects. A click is registered when a recipient follows a tracked link. Links that are copied and pasted directly, or that are accessed through email clients that strip tracking parameters, may not be recorded. Click rate may therefore undercount actual link engagement.

    Bot clicks and security scanners — Some corporate email security systems and spam filters automatically follow links in emails to check for malicious content. These automated clicks can inflate unique clicks and Total clicks values, particularly for audiences with high concentrations of corporate or enterprise email addresses.

    Cached and pre-fetched opens — Beyond Apple Mail Privacy Protection, some email clients and proxy services cache or pre-fetch email content including tracking pixels. This can register opens that do not reflect genuine recipient engagement, contributing to inflated open rate figures.

    Common issues

    Open rate appears inflated compared to click rate → Apple Mail Privacy Protection is likely pre-loading tracking pixels for a portion of your audience. Use unique clicks and CTOR as supplementary engagement indicators, and review the Opens and clicks by day chart on the Campaign overview page to check whether the open pattern aligns with realistic human behavior.

    Click rate is zero despite a healthy open rate → Your email may not contain tracked links, or all links may be unsubscribe or preference links that recipients are not engaging with. Verify that your email contains at least one call-to-action link and review the Clicks report tab on the Campaign overview page to confirm that links are being tracked.

    Open rate drops suddenly across campaigns → A sudden decline in opened values in the Email campaigns list may indicate a deliverability issue, such as emails being routed to spam. Check the hard bounced and spam reports metrics in the Statistics section for the affected campaigns, and verify that your sending domain authentication is intact.

    Click rate varies significantly between campaigns → Content relevance, offer strength, and call-to-action design differ across sends. Compare the clicks column in the Email campaigns list to identify patterns in which campaign types generate higher engagement, and use the Clicks report tab to see which specific links received the most interaction.

    CTOR is high but click rate is low → The content is engaging for those who open, but too few recipients are opening the email. Focus on improving subject lines, preview text, and send timing to increase opened rates, which will expand the audience that can interact with your content.

    FAQs

    What is a good open rate?

    Open rates vary by industry, list size, and audience. As a general reference, 15–25% is considered a healthy range for marketing emails. However, Apple Mail Privacy Protection and image-blocking email clients can inflate or deflate reported open rates, so treat this metric as directional rather than exact.

    What is the difference between click rate and click-to-open rate?

    Click rate is calculated as unique clicks divided by total delivered emails — it measures engagement across your entire send. Click-to-open rate (CTOR) is calculated as unique clicks divided by unique opens — it measures how engaging your content was specifically among recipients who opened the email.

    Why is my open rate higher than expected?

    Apple Mail Privacy Protection pre-loads tracking pixels for Apple Mail users, which registers an open even if the recipient did not actively view the email. This can inflate open rate figures. Consider using click rate or CTOR as a supplementary engagement indicator.

    Does Sender track unique opens or total opens?

    Sender tracks both. Unique opens count each recipient once regardless of how many times they open the email. Total opens count every open event including repeat opens by the same recipient. The opened metric in the Statistics section of the Campaign overview page displays the unique open percentage and count by default.

    Why might my click rate be higher than expected?

    Corporate email security systems and spam filters sometimes automatically follow links in emails to scan for threats. These bot clicks inflate unique clicks values. If you notice unusually high click rates from specific domains or immediate clicks within seconds of delivery, automated scanning is a likely cause.

    Can I compare open rate and click rate across campaigns?

    Yes. The Email campaigns list displays opened and clicks columns for each sent campaign, allowing you to compare performance side by side. For automations, the Automations list shows opens and clicks percentages for each workflow.

  • Webhooks explained

    This guide explains how to configure webhooks in Sender so you can receive real-time HTTP notifications when subscriber, group, campaign, and bounce events occur in your account.

    Prerequisites

    • An active Sender account
    • A publicly accessible HTTPS endpoint that can receive POST requests
    • Access to Account settings → Webhooks in the Sender dashboard
    • Server-side code capable of parsing JSON payloads and validating signatures

    Where to Find This Setting

    In the Sender dashboard, go to: Account settings → Webhooks

    On this page you will see a table listing all existing webhooks with the columns Topic, Total deliveries, Total failures, and Response time. An Add webhook button is located in the top-right corner. Below the webhook table, the Signing secret section displays your masked secret with options to reveal, copy, or rotate it.

    Steps to Configure a Webhook

    Step 1 — Open the Webhooks page

    In the left sidebar, click Account settings to expand the submenu, then click Webhooks. You will see the webhooks table and the Signing secret section. If you have no webhooks yet, the table will be empty.

    Step 2 — Add a new webhook

    Click the Add webhook button in the top-right corner. A dialog titled Add webhook will appear with two fields: URL and Topic.

    Step 3 — Enter your endpoint URL

    In the URL field, enter the full HTTPS address of your receiving endpoint — for example, https://yourdomain.com/webhooks/sender. This is the address Sender will send POST requests to when the selected event occurs.

    Step 4 — Select a topic

    Click the Topic dropdown and choose the event type you want to subscribe to. Available topics include subscribers/new, groups/new-subscriber, groups/unsubscribed, subscribers/updated, subscribers/unsubscribed, campaigns/new, groups/new, and bounces/new. Each webhook supports one topic, so create additional webhooks if you need to track multiple event types.

    Step 5 — Save the webhook

    Click Add to create the webhook. The dialog will close and the new webhook will appear in the table. Confirm the correct Topic and endpoint URL are displayed in the row.

    Step 6 — Copy your signing secret

    In the Signing secret section below the webhook table, click the copy icon next to the masked secret to copy it to your clipboard. Store this value securely in your server configuration — you will use it to verify that incoming payloads originate from Sender.

    Step 7 — Verify delivery on your endpoint

    Trigger the event you subscribed to — for example, add a new subscriber if you chose subscribers/new. Check your endpoint's incoming request log to confirm a POST request arrived from Sender. The Total deliveries counter in the webhooks table should increment, and Total failures should remain at 0.

    Event Types and Payload Reference

    subscribers/new — Fires when a new subscriber is added to your account. The payload includes subscriber details such as email address and the timestamp of creation.

    subscribers/updated — Fires when an existing subscriber's data is modified. The payload includes the updated subscriber fields and the timestamp of the change.

    subscribers/unsubscribed — Fires when a subscriber opts out globally. The payload includes the subscriber's email address and the unsubscribe timestamp.

    groups/new — Fires when a new subscriber group is created in your account. The payload includes the group name and creation timestamp.

    groups/new-subscriber — Fires when a subscriber is added to a specific group. The payload includes the subscriber's email address, the group identifier, and the timestamp.

    groups/unsubscribed — Fires when a subscriber is removed or unsubscribes from a specific group. The payload includes the subscriber's email, the group identifier, and the timestamp.

    campaigns/new — Fires when a new email campaign is created. The payload includes campaign details such as the campaign name and creation timestamp.

    bounces/new — Fires when a bounce event is recorded for a sent email. The payload includes the recipient email address, the bounce type, and the timestamp.

    Security and Verification

    Signing secret — Sender provides a unique Signing secret on the Webhooks page. Use this secret on your server to compute an HMAC hash of each incoming payload body and compare it against the signature included in the webhook request headers. If the values match, the payload is authentic.

    Rotate secret — If your signing secret is compromised, click Rotate secret on the Webhooks page to generate a new one. Update your server configuration with the new secret immediately, as the old secret will stop working once rotated.

    HTTPS only — Always use an HTTPS endpoint URL to ensure payloads are encrypted in transit. Sender's URL field accepts HTTPS addresses, and using plain HTTP exposes event data to interception.

    Webhook Tips

    One topic per webhook — Each webhook is bound to a single topic. To receive multiple event types at the same endpoint, create a separate webhook for each topic pointing to that URL.

    Return a 200 response promptly — Your endpoint should respond with a 2xx status code as quickly as possible. Perform heavy processing asynchronously after acknowledging receipt to avoid timeouts.

    Monitor the webhooks table — Check the Total failures and Response time columns on the Webhooks page regularly. A rising failure count indicates your endpoint is not responding correctly.

    Use View error logs for debugging — Click the dropdown arrow next to Pause on any webhook row and select View error logs to open the Webhook logs page. This page lists failed deliveries with the Date / time and Error code for each failure.

    Pause webhooks during maintenance — Click Pause on a webhook row to temporarily stop deliveries while your server is undergoing maintenance. This prevents failures from accumulating.

    Common Issues

    Webhook not appearing in the table → You may have closed the Add webhook dialog without clicking Add. Reopen the dialog, fill in the URL and Topic fields, and click Add.

    Total failures incrementing → Your endpoint is not returning a 2xx status code. Verify that your server is reachable, the URL is correct, and your endpoint returns 200 after processing the request. Open View error logs from the webhook row dropdown to check the specific Error code.

    Signing secret mismatch → The secret stored on your server does not match the current secret in Sender. Copy the Signing secret from the Webhooks page again and update your server. If you recently clicked Rotate secret, make sure the new value is deployed.

    Endpoint receives no requests → Confirm the webhook is not paused — the row should display a Pause button, not a Resume button. Also verify that the event you expect has actually occurred in your Sender account.

    Duplicate payloads received → If your endpoint takes too long to respond, Sender may retry the delivery. Ensure your server responds with 200 within a few seconds, and implement idempotency checks using the event timestamp or a unique identifier in the payload.

    FAQs

    What webhook topics are available in Sender? Sender supports eight topics: subscribers/new, subscribers/updated, subscribers/unsubscribed, groups/new, groups/new-subscriber, groups/unsubscribed, campaigns/new, and bounces/new. All topics are listed in the Topic dropdown inside the Add webhook dialog.

    Can I send the same event to multiple endpoints? Yes. Create a separate webhook for each endpoint and select the same Topic in each. Every webhook operates independently.

    How do I verify that a webhook payload came from Sender? Use the Signing secret displayed on the Webhooks page. Compute an HMAC hash of the incoming payload body using that secret and compare it to the signature value in the request header. A match confirms the payload originated from Sender.

    What happens if my endpoint is down when Sender sends a webhook? If your endpoint does not respond with a 2xx status code, the delivery is recorded as a failure. Check the Total failures column and open View error logs to review the Error code and Date / time of each failed attempt.

    Can I edit an existing webhook? Yes. Click the dropdown arrow next to Pause on the webhook row and select Edit. The Edit webhook dialog lets you update the URL and Topic. Click Add to save your changes.

    Can I temporarily disable a webhook without deleting it? Yes. Click the Pause button on the webhook row. The webhook remains in the table but stops receiving deliveries until you resume it.

    How do I delete a webhook? Click the dropdown arrow next to Pause on the webhook row and select Delete. The webhook is permanently removed from the table.

    Can I test a webhook without triggering a real event? Trigger a real event in your account — for example, add a test subscriber — and monitor your endpoint for the incoming payload. Alternatively, use a service like webhook.site or RequestBin as your endpoint URL to inspect payloads without building a server.

  • REST API authentication

    This guide explains how to generate an API access token and authenticate requests to Sender's REST API.

    Prerequisites

    • An active Sender account
    • An API access token generated from Account settings → API access tokens
    • A tool or environment for making HTTP requests (e.g., cURL, Postman, or application code)

    Authentication

    All Sender API v2 requests use the base URL https://api.sender.net/v2/. The API is served only over HTTPS — calls made over plain HTTP will fail.

    Include three headers with every request:

    ``Authorization: Bearer YOUR_API_TOKEN

    Content-Type: application/json

    Accept: application/json

    Here is a minimal authenticated request using cURL:

    bash

    ``curl -X GET \

      "https://api.sender.net/v2/subscribers" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json"

    A successful response returns a 200 status code with the requested resource data in the response body. If the token is missing or invalid, the API returns a 401 Unauthorized response.

    Steps to authenticate with the API

    Step 1 — Generate an API access token

    Go to Account settings → API access tokens in the Sender dashboard. Click Create API token. In the Select token validity time dialog, choose how long the token should remain valid — the options are Forever, 30 days, 7 days, or 1 day. Click Create. Copy the token immediately and store it securely. The token may not be displayed again after you navigate away from the page.

    Step 2 — Add the token to your API requests

    Include the Authorization: Bearer YOUR_API_TOKEN header in every request you send to https://api.sender.net/v2/. Also include Content-Type: application/json and Accept: application/json as headers. Here is an example using JavaScript:

    javascript

    ``const url = "https://api.sender.net/v2/campaigns/";

    let headers = {

        "Authorization": "Bearer YOUR_API_TOKEN",

        "Content-Type": "application/json",

        "Accept": "application/json",

    };

    fetch(url, {

        method: "GET",

        headers,

    }).then(response => response.json());

    Step 3 — Verify that authentication works

    Send a GET request to https://api.sender.net/v2/subscribers with your token in the Authorization header. A successful response returns a 200 status code with a JSON body containing a data array of subscriber objects, along with links and meta pagination objects. If you receive a 401 Unauthorized response, your token is invalid or missing — regenerate it from Account settings → API access tokens.

    Step 4 — Handle token expiration

    If you selected a limited validity period (e.g., 30 days, 7 days, or 1 day) when creating your token, the token expires after that duration. Expired tokens return a 401 Unauthorized response. To resolve this, go to Account settings → API access tokens, create a new token, and update the Authorization header in your application code with the new value.

    Endpoint reference

    GET /v2/subscribers — Returns a paginated list of all subscribers in your account. No required body parameters. Supports page, limit, order, and direction query parameters for pagination and sorting.

    GET /v2/subscribers/{email}or{phone}or{ID} — Returns a single subscriber profile. Replace the path parameter with the subscriber's email address, phone number, or subscriber ID. No request body required.

    GET /v2/campaigns — Returns a paginated list of all campaigns. Supports optional limit and status query parameters. Accepted status values are SCHEDULED, SENDING, SENT, or DRAFT.

    Error handling

    401 — Unauthorized — The API could not authenticate your request. This means the Authorization header is missing, the token value is incorrect, or the token has expired. Regenerate a token from Account settings → API access tokens and update your request header.

    400 — Bad request — The request was malformed or contained invalid data. The response body includes a "success": false field and a "message" field with details about what went wrong.

    404 — Not found — The requested resource does not exist. Verify that the endpoint path and any resource IDs in the URL are correct.

    422 — Bad request parameters — One or more request parameters failed validation. The response body includes a "message" field and an "errors" object where each key is the invalid field name and the value is an array of validation messages.

    429 — Too many requests — You exceeded the API rate limit. The response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and Retry-After headers. Wait for the number of seconds specified in Retry-After before retrying.

    API tips

    Store your token securely — Save your API token in an environment variable or secrets manager. Never hardcode it in client-side code or commit it to public repositories.

    Use the shortest valid token lifetime — If your integration runs a one-time migration, choose 1 day or 7 days instead of Forever to limit exposure if the token is compromised.

    Always set both content headers — Include Content-Type: application/json and Accept: application/json on every request, even for GET requests, to ensure consistent response formatting.

    Implement exponential backoff for rate limits — When you receive a 429 response, read the Retry-After header and wait before retrying. Increase the delay on consecutive 429 responses to avoid further throttling.

    Verify responses programmatically — Check the HTTP status code before processing the response body. Only parse data from responses with a 200 or 201 status code.

    Common issues

    Requests return 401 immediately after token creation → The token was not copied correctly or includes extra whitespace. Go to Account settings → API access tokens, create a new token, and copy the full value without leading or trailing spaces.

    Requests fail with a connection error → You are using http:// instead of https:// in the base URL. The API only accepts HTTPS connections. Change your base URL to https://api.sender.net/v2/.

    422 errors on POST or PATCH requests → Required fields are missing or contain invalid values. Check the "errors" object in the response body to identify which fields failed validation, then correct the request body and retry.

    Rate limiting triggered during bulk operations → Sending too many requests per minute causes 429 responses. Reduce your request frequency, batch operations where possible, and check the X-RateLimit-Remaining header before sending the next request.

    Token stops working after a period → The token was created with a limited validity time (1 day, 7 days, or 30 days) and has expired. Generate a new token from Account settings → API access tokens and update your application configuration.

    FAQs

    Where do I find my API access token?

    Go to Account settings → API access tokens in the Sender dashboard. Click Create API token to generate a new one. Copy the token immediately — it may not be displayed again after you navigate away.

    What is the base URL for all API requests?

    All Sender API v2 requests use the base URL https://api.sender.net/v2/. Append the specific endpoint path after this base URL.

    What token validity options are available?

    When creating a token, you can choose Forever, 30 days, 7 days, or 1 day. Select the validity period that matches your use case — shorter durations are more secure for temporary integrations.

    What happens if I exceed the API rate limit?

    The API returns a 429 Too Many Requests response with a Retry-After header. Wait for the specified number of seconds before retrying. Implement exponential backoff in your code to handle rate limits gracefully.

    Can I have multiple active API tokens?

    Yes. You can create multiple tokens from Account settings → API access tokens. Each token authenticates independently. Use separate tokens for different applications or environments so you can revoke one without affecting others.

    How do I paginate through large lists of subscribers?

    List endpoints return paginated results. Use the page and limit query parameters to control which page of results is returned. Check the meta object in the response for current_page, last_page, and total values to iterate through all records.

  • API Rate Limits

    This guide explains how to monitor, manage, and handle API rate limits when using Sender's REST API.

    Prerequisites

    • An active Sender account
    • An API access token generated from Account settings → API access tokens
    • A tool or environment for making HTTP requests (e.g., cURL, Postman, or application code)
    • Familiarity with reading HTTP response headers

    Authentication

    All Sender API v2 requests use the base URL https://api.sender.net/v2/. Include the Authorization: Bearer header and content-type headers with every request. The API is served only over HTTPS — unencrypted HTTP requests will fail.

    bash

    curl -X GET \

      "https://api.sender.net/v2/subscribers" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json"

    “`

    ## Steps to Monitor and Handle API Rate Limits

    ### Step 1 — Check rate limit headers in API responses

    Every API response from Sender includes rate limit headers. After making any request, inspect the response headers for `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`. The `X-RateLimit-Limit` header shows the maximum number of requests you can make per minute. The `X-RateLimit-Remaining` header shows how many requests you have left in the current window. Use these values to track your consumption before you hit the limit.

    “`

    X-RateLimit-Limit: 60

    X-RateLimit-Remaining: 45

    X-RateLimit-Reset: 2026-03-18T13:02:00Z

    “`

    ### Step 2 — Detect a rate limit response

    When you exceed the allowed number of requests per minute, the API returns a `429 Too Many Requests` status code. The response includes a `Retry-After` header that specifies the number of seconds to wait before sending a new request. Stop making requests immediately when you receive a `429` response to avoid further rejections.

    “`

    HTTP/1.1 429 Too Many Requests

    Retry-After: 30

    X-RateLimit-Limit: 60

    X-RateLimit-Remaining: 0

    X-RateLimit-Reset: 2026-03-18T13:02:00Z

    Step 3 — Implement exponential backoff retry logic

    When a 429 response is returned, read the Retry-After header value and wait at least that many seconds before retrying. If the Retry-After header is not present, use exponential backoff — start with a 1-second delay, then double it on each consecutive 429 response (1s, 2s, 4s, 8s, and so on). Cap the maximum delay at a reasonable ceiling such as 60 seconds. Resume normal request intervals once a successful 2xx response is received.

    python

    import time

    import requests

    def make_request_with_backoff(url, headers, max_retries=5):

        delay = 1

        for attempt in range(max_retries):

            response = requests.get(url, headers=headers)

            if response.status_code == 429:

                wait = int(response.headers.get("Retry-After", delay))

                time.sleep(wait)

                delay = min(delay * 2, 60)

            else:

                return response

        return response

    Step 4 — Throttle requests proactively using remaining count

    Instead of waiting for a 429 response, monitor the X-RateLimit-Remaining header after each request. When the remaining count drops below a threshold (for example, fewer than 5 requests remaining), introduce a delay before the next call. Check the X-RateLimit-Reset header to determine when the window resets, and pause until that time. This approach prevents rate limit errors and keeps your integration running smoothly.

    python

    remaining = int(response.headers.get("X-RateLimit-Remaining", 1))

    if remaining < 5:

        reset_time = response.headers.get("X-RateLimit-Reset")

        # Parse reset_time and sleep until the window resets

        time.sleep(10)

    Step 5 — Verify rate limit handling is working

    Send a GET request to any endpoint, such as GET https://api.sender.net/v2/subscribers, and confirm the response includes the X-RateLimit-Limit and X-RateLimit-Remaining headers. Verify that X-RateLimit-Remaining decrements with each request. If your backoff logic is in place, simulate rapid requests in a test environment and confirm your code pauses and retries correctly when a 429 status is returned.

    Endpoint Reference

    GET /v2/subscribers — Returns all subscribers in your account. Supports pagination with ?page, ?limit, ?order, and ?direction query parameters. Use this endpoint to verify rate limit headers are returned in the response.

    GET /v2/campaigns — Returns all campaigns in your account. Paginated. Rate limit headers are included in every response, making any list endpoint suitable for testing your rate limit handling.

    GET /v2/groups — Returns all subscriber groups. Paginated. Like all Sender API endpoints, responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.

    Error Handling

    429 — Too Many Requests — You have exceeded the allowed number of API requests per minute. Read the Retry-After header for the number of seconds to wait before retrying. Implement exponential backoff in your retry logic.

    401 — Unauthorized — Your API token is missing, invalid, or expired. Go to Account settings → API access tokens to verify or regenerate your token. Include the Authorization: Bearer YOUR_API_TOKEN header in every request.

    400 — Bad Request — The request was malformed or contained invalid data. The response body includes a message field with details about the error. Review the message value and correct the request before retrying.

    422 — Bad Request Parameters — One or more required parameters are missing or invalid. The response includes an errors object with per-field details. Check each field listed in the errors object and provide valid values.

    5xx — Server Error — An unexpected error occurred on Sender's servers. Do not retry immediately — wait a few seconds and try again. If the error persists, contact [email protected].

    API Tips

    Read headers on every response — Check X-RateLimit-Remaining after every API call, not just when errors occur. This lets you proactively throttle requests before hitting the limit.

    Use the Retry-After header — Always prefer the Retry-After value over a hardcoded delay when handling 429 responses. This gives you the exact wait time the server requires.

    Batch your operations — Reduce the total number of API calls by using list endpoints with the ?limit parameter to fetch more records per request, rather than making many small requests.

    Log rate limit data — Record the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset values from each response. This helps you identify usage patterns and adjust your request frequency over time.

    Cap your retry attempts — Set a maximum number of retries (e.g., 5) in your backoff logic. If the limit is still exceeded after the maximum retries, log the failure and alert your team rather than retrying indefinitely.

    Common Issues

    Requests fail with 429 despite low traffic → Multiple API tokens or parallel processes may be sharing the same rate limit window. Coordinate request timing across all services that use your Sender API credentials.

    X-RateLimit-Remaining shows 0 but no 429 returned → The remaining counter may reset between your check and the next request. Always handle a 429 response in your code, even if the remaining count appeared positive on the prior call.

    Retry logic causes duplicate operations → Non-idempotent requests (such as POST to create subscribers) can result in duplicate records if retried after a 429. Check whether the resource already exists before retrying create operations.

    Rate limit headers are missing from the response → Ensure you are sending requests to https://api.sender.net/v2/ over HTTPS with a valid Authorization: Bearer header. Unauthenticated or malformed requests may not return rate limit headers.

    Backoff delay grows too large → If you do not cap your exponential backoff, delays can become unreasonably long. Set a maximum wait time (e.g., 60 seconds) and fall back to that ceiling once the calculated delay exceeds it.

    FAQs

    Where do I find my API access token?

    Go to Account settings → API access tokens in the Sender dashboard. Click Create API token to generate a new one. Copy the token immediately — it may not be displayed again after you navigate away.

    What is the rate limit for Sender's API?

    Sender enforces a per-minute rate limit on API requests. The exact limit for your account is returned in the X-RateLimit-Limit response header with every API call. Monitor this header to know your current allowance.

    What happens if I exceed the API rate limit?

    The API returns a 429 Too Many Requests response with a Retry-After header. Wait for the number of seconds specified in Retry-After before retrying. Implement exponential backoff in your code to handle rate limits gracefully.

    Are rate limit headers included in every API response?

    Yes. Every successful and error response from the Sender API includes the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. Use these to track your usage in real time.

    Does the rate limit apply per API token or per account?

    The rate limit is tracked per account. If you use multiple API tokens, all tokens share the same rate limit window. Coordinate request timing across all tokens and services to stay within the limit.

  • Testing API Calls

    This guide explains how to test your API calls to Sender's REST API, verify authentication, validate request and response patterns, and confirm that your integration works correctly before deploying to production.

    Prerequisites

    • An active Sender account
    • An API access token generated from Account settings → API access tokens
    • A tool or environment for making HTTP requests (e.g., cURL, Postman, or application code)
    • Familiarity with reading JSON response bodies and HTTP status codes

    Authentication

    All requests to the Sender API require a Bearer token passed in the Authorization header. The base URL for all API v2 endpoints is https://api.sender.net/v2/. Every request must also include Content-Type: application/json and Accept: application/json headers.

    A minimal authenticated request looks like this:

    bash

    curl -X GET \

      "https://api.sender.net/v2/subscribers" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json"

    Replace YOUR_API_TOKEN with the token you generated from Account settings → API access tokens. If the token is valid, you receive a 200 response with data. If it is invalid or missing, you receive a 401 response.

    Steps to Test API Calls

    Step 1 — Verify your authentication with a read-only request

    Start by sending a GET request to https://api.sender.net/v2/subscribers to confirm your API token works. This is a safe, read-only call that returns your subscriber list without modifying any data.

    bash

    curl -X GET \

      "https://api.sender.net/v2/subscribers" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json"

    A successful 200 response returns a JSON body with data, links, and meta objects. If you receive a 401 status code, your token is invalid — generate a new one from Account settings → API access tokens.

    Step 2 — Test a GET request with query parameters

    Send a GET request to https://api.sender.net/v2/groups to retrieve your subscriber groups. Add pagination parameters to test parameterized requests. Append ?page=1&limit=5 to the URL to return only the first five results.

    bash

    curl -X GET \

      "https://api.sender.net/v2/groups?page=1&limit=5" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json"

    The 200 response includes a data array of group objects and a meta object showing current_page, per_page, total, and last_page values. Verify these pagination fields reflect your parameters.

    Step 3 — Test a POST request with a request body

    Send a POST request to https://api.sender.net/v2/subscribers to test creating a resource. Include a JSON request body with at least the required email field. Set trigger_automation to false to prevent triggering any automations during testing.

    bash

    curl -X POST \

      "https://api.sender.net/v2/subscribers" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json" \

      -d '{

        "email": "[email protected]",

        "firstname": "Test",

        "lastname": "User",

        "trigger_automation": false

      }'

    A successful response returns a 200 status with "success": true and the full subscriber object in the data field. If the email field is missing or invalid, the API returns a 422 status with an errors object detailing the validation failure.

    Step 4 — Test error handling by sending an invalid request

    Intentionally send a malformed request to verify your code handles errors correctly. Send a POST request to https://api.sender.net/v2/subscribers with an invalid email value or omit the required email field entirely.

    bash

    curl -X POST \

      "https://api.sender.net/v2/subscribers" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json" \

      -d '{"email": "not-a-valid-email"}'

    The API returns a 422 status code with a response body containing a message field and an errors object. Each key in errors is a field name, and its value is an array of validation messages. Confirm your code parses this structure correctly.

    Step 5 — Verify the result in the Sender dashboard

    After a successful POST test, confirm the data persists by retrieving it with a GET request. Send a GET request to https://api.sender.net/v2/subscribers/{email} replacing {email} with the email address you used in Step 3.

    bash

    curl -X GET \

      "https://api.sender.net/v2/subscribers/[email protected]" \

      -H "Authorization: Bearer YOUR_API_TOKEN" \

      -H "Content-Type: application/json" \

      -H "Accept: application/json"

    The 200 response returns the subscriber's full profile in the data object, including id, email, firstname, lastname, status, and subscriber_tags. You can also log in to the Sender dashboard, navigate to Subscribers, and confirm the test subscriber appears there.

    Endpoint Reference

    GET /v2/subscribers — Returns a paginated list of all subscribers in your account. Supports page, limit, order, and direction query parameters. No request body required.

    GET /v2/subscribers/{email}or{phone}or{ID} — Returns a single subscriber's full profile. Replace the path parameter with the subscriber's email address, phone number, or subscriber ID. No request body required.

    POST /v2/subscribers — Creates a new subscriber. The email field is required in the request body. Optional fields include firstname, lastname, groups, fields, phone, and trigger_automation.

    GET /v2/groups — Returns a paginated list of all subscriber groups. Supports page, limit, order, and direction query parameters. No request body required.

    Error Handling

    401 — Unauthorized — The API could not authenticate your request. Verify that your Authorization header uses the format Bearer YOUR_API_TOKEN and that the token is active in Account settings → API access tokens.

    400 — Bad request — The request is malformed or references an invalid action. The response body includes a message field with details. Check that your request URL and HTTP method are correct.

    404 — Not found — The requested resource does not exist. Verify the endpoint path and any resource IDs or email addresses in the URL are correct.

    422 — Bad request parameters — One or more fields failed validation. The response includes a message field and an errors object where each key is a field name mapped to an array of error messages. Fix the invalid fields and retry.

    429 — Too many requests — You have exceeded the API rate limit. The response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and Retry-After headers. Wait for the number of seconds specified in Retry-After before sending another request.

    5xx — Server error — An internal error occurred on Sender's servers. Retry the request after a short delay. If the issue persists, contact [email protected].

    API Tips

    Use read-only endpoints first — Start testing with GET requests like GET /v2/subscribers or GET /v2/groups to verify authentication and connectivity without modifying any data.

    Disable automations during testing — When creating subscribers via the API during testing, set "trigger_automation": false in the request body to prevent unintended automation triggers.

    Check response headers for rate limits — Every API response includes X-RateLimit-Remaining and X-RateLimit-Limit headers. Monitor these during testing to understand your usage and implement backoff strategies before hitting limits.

    Test pagination with small limits — Use ?page=1&limit=2 to return minimal data while verifying that your pagination logic correctly reads the meta object fields like current_page, last_page, and total.

    Log full responses during development — Capture the complete HTTP status code, response headers, and body during testing. This gives you full visibility into errors, rate limit state, and response structure before writing production error handling.

    Common Issues

    401 on every request → The API token may be expired, revoked, or incorrectly formatted. Ensure the Authorization header value is exactly Bearer YOUR_API_TOKEN with a single space after Bearer. Regenerate the token from Account settings → API access tokens if needed.

    422 when creating a subscriber → The email field is either missing or contains an invalid value. Verify the request body is valid JSON with "email" set to a properly formatted email address.

    Empty data array in response → The account has no resources of the requested type, or the pagination parameters point beyond the available results. Check the meta.total value and adjust your page parameter.

    Connection refused or timeout → The API only accepts HTTPS connections at https://api.sender.net/v2/. Ensure you are not using http:// and that your network allows outbound HTTPS traffic on port 443.

    Response body is not JSON → The Accept: application/json header may be missing from your request. Include both Content-Type: application/json and Accept: application/json in every request.

    FAQs

    Where do I find my API access token? Go to Account settings → API access tokens in the Sender dashboard. Click Create API token to generate a new one. Copy the token immediately — it may not be displayed again after you navigate away.

    What is the base URL for all API requests? All Sender API v2 requests use the base URL https://api.sender.net/v2/. Append the specific endpoint path after this base URL. The API is served only over HTTPS.

    What tools can I use to test API calls? You can use cURL from the command line, Postman as a graphical client, or write test scripts in any language that supports HTTP requests (JavaScript, Python, PHP, etc.). The Sender API docs provide code examples in JavaScript, PHP, Python, and Bash.

    How do I know if my API call was successful? Successful responses return a 200 or 201 status code with the resource data in the response body. Error responses return 4xx or 5xx status codes with a message field and, for validation errors, an errors object describing each invalid field.

    What happens if I exceed the API rate limit? The API returns a 429 Too Many Requests response with a Retry-After header. Wait for the specified number of seconds before retrying. Implement exponential backoff in your code to handle rate limits gracefully.

    Can I test write operations without affecting my live data? Use the trigger_automation parameter set to false when creating subscribers to prevent automations from firing. You can delete test subscribers after testing. There is no sandbox environment, so all API calls operate on your live account data.

  • Zapier Integration

    This guide explains how to connect Sender to Zapier so you can automate workflows between Sender and thousands of other apps — such as syncing new subscribers, triggering actions when campaigns are created, or adding contacts from external tools.

    Prerequisites

    • An active Sender account
    • A Zapier account (free or paid plan)
    • An API access token from Sender (generated in Account settings → API access tokens)
    • A Zap idea in mind — knowing which trigger and action you want to automate

    Where to Find This Setting

    The Sender side of the connection is managed through your API access token. To find it, go to Account settings → API access tokens in your Sender dashboard. Click Create API token if you don't have one yet, then copy the token value.

    The Zapier side of the connection is managed entirely within Zapier. You configure the integration when creating or editing a Zap in the Zap editor at https://zapier.com. You can also manage existing connections from the Apps page under My Apps in your Zapier dashboard.

    Note: The Zapier interface may change over time. Steps and menu labels described below reflect the current layout but may vary slightly.

    Steps to Connect Sender to Zapier

    Step 1 — Generate an API Access Token in Sender

    In your Sender dashboard, navigate to Account settings → API access tokens. Click Create API token. Give your token a descriptive name (e.g., Zapier integration) so you can identify it later. Once the token is created, copy it and store it securely. You will paste this token into Zapier during the authentication step.

    Step 2 — Create a Zap and Authenticate Sender

    Log in to your Zapier account and click Create → Zaps (or + Create depending on your interface). In the Zap editor, choose whether Sender will serve as the trigger app or the action app. Search for and select Sender. When prompted to connect your Sender account, click Sign in and paste your API access token into the authentication field. Click Yes, Continue to confirm the connection.

    Step 3 — Configure the Trigger and Action

    Select the specific trigger event or action event you want to use. If Sender is your trigger, choose an event such as New Subscriber or New Campaign. If Sender is your action, choose an event such as Add / Update Subscriber or Add Subscriber to Group. Configure any required fields — such as selecting a subscriber group — then click Continue. Test the step to confirm data is flowing correctly, then publish your Zap by toggling it on.

    How to Verify the Integration

    After publishing your Zap, trigger the event manually to confirm data flows as expected. For example, if your trigger is New Subscriber, add a test subscriber in Sender and check that the action fires in the connected app. In Sender, go to Subscribers to verify that any new contacts pushed by a Zap action appear in the correct subscriber group. In Zapier, check the Zap History page to confirm the Zap ran successfully without errors.

    What Syncs Between Platforms

    Subscriber data (Sender → Zapier) — When a trigger event occurs in Sender (such as a new subscriber being added, updated, or unsubscribed), Zapier receives the subscriber's details in real time. All Sender triggers are instant, meaning data is sent to Zapier immediately when the event happens.

    Subscriber data (Zapier → Sender) — When a Zap action pushes data into Sender, it can create or update subscribers, add or remove subscribers from groups, or unsubscribe email addresses. Data is sent to Sender as soon as the Zap's trigger fires.

    Campaign data (bidirectional) — Sender can trigger a Zap when a new campaign is created. In the other direction, Zapier can create a draft campaign or send an existing draft campaign in Sender.

    Integration Tips

    Use descriptive token names — When creating your API access token in Sender, name it something identifiable like Zapier integration so you can easily manage or revoke it later without affecting other integrations.

    Test before publishing — Always use Zapier's built-in test feature for each step before turning on your Zap. This confirms that authentication works and data maps correctly between platforms.

    Use filters and formatting in Zapier — Add Zapier filter or formatter steps between your trigger and action to control which data flows into Sender. For example, filter out subscribers from a specific domain or format phone numbers before syncing.

    Monitor Zap History — Regularly check the Zap History page in Zapier to catch errors early. Failed Zap runs typically indicate expired tokens, missing required fields, or changed configurations.

    One token per integration — Consider creating a separate API access token for each third-party integration. This way, revoking one token does not break other connected services.

    Common Issues

    Sender account fails to authenticate in Zapier → The API access token may be incorrect or contain extra spaces. Go to Account settings → API access tokens in Sender, create a new token, and paste it carefully into Zapier without any leading or trailing spaces.

    Zap runs but no data appears in Sender → The action step may be misconfigured. Open the Zap in the Zap editor, verify that required fields (such as email address and subscriber group) are correctly mapped, and re-test the step.

    Trigger not firing for new events → All Sender triggers are instant and rely on webhooks. If triggers stop working, go to My Apps in Zapier, find the Sender connection, and click Reconnect to re-establish the webhook connection.

    Duplicate subscribers appearing in Sender → Use the Add / Update Subscriber action instead of creating a new subscriber each time. This action checks for an existing email address and updates the record rather than creating a duplicate.

    Zap turns off automatically → Zapier disables Zaps after repeated errors. Check the Zap History for error details, fix the underlying issue (expired token, deleted group, etc.), and turn the Zap back on.

    FAQs

    Where do I find my Sender API access token?

    Go to Account settings → API access tokens in the Sender dashboard. Click Create API token if you don't have one yet. Copy the token and paste it into the Zapier authentication field when connecting your Sender account.

    What triggers and actions does Sender support in Zapier?

    Sender supports seven instant triggers: New Campaign, New Subscriber, New Group, New Subscriber in Group, New Unsubscriber, New Unsubscriber From Group, and Updated Subscriber. It also supports seven actions: Add / Update Subscriber, Add Subscriber to Group, Remove Subscriber From Group, Create Campaign, Send Campaign, Send Transactional Campaign, and Unsubscribe Email.

    Does the integration sync existing subscribers or only new ones?

    Sender triggers in Zapier only fire for new events going forward — they do not sync historical data. To bring existing subscribers into a Zap workflow, use a Zapier action triggered by another app (such as a spreadsheet) to push contacts into Sender.

    Can I connect Sender to multiple apps through Zapier at the same time?

    Yes. Each Zap operates independently. You can create multiple Zaps that connect Sender to different apps simultaneously without conflicts.

    What happens if I revoke my API access token in Sender?

    Any Zapier Zaps authenticated with that token will stop working. You will need to create a new token in Account settings → API access tokens and reconnect your Sender account in Zapier using the new token.

    Are Sender triggers in Zapier instant or polling-based?

    All Sender triggers in Zapier are instant. They use webhooks to send data to Zapier the moment the event occurs in Sender, with no polling delay.