Blog

  • First Email Campaign

    This guide walks you through creating and sending your first email campaign in Sender. An email campaign is a single email you send to a group of subscribers — like a newsletter, announcement, or promotion. By the end of this guide, you will have built an email, chosen your recipients, and either sent or scheduled your first campaign.

    What You’ll Need

    • A Sender account (sign up at sender.net if you have not created one yet)
    • At least one subscriber added to your account (see the Help Center article on adding subscribers if you have not done this yet)
    • Your email content ready — the subject line, body text, and any images you want to include

    Steps to Create and Send Your First Email Campaign

    Step 1 — Start a New Campaign

    Log in to your Sender account. You will land on the Dashboard, your home screen. In the left sidebar, click Email campaigns. This opens a page listing all your campaigns.

    Click the New campaign button in the top-right corner. Sender will take you to the Campaign settings page — the first step of the campaign creation workflow. You will see a progress bar at the top showing all four stages: Settings, Design, Recipients, and Review and send.

    Step 2 — Configure Your Campaign Settings

    On the Campaign settings page, fill in the following fields under Campaign details:

    Email subject — Type the subject line your subscribers will see in their inbox. Keep it short and clear.

    Email Preview text — Type a short summary that appears next to the subject line in most email clients. This is optional but recommended. You can see how your subject line and preview text will appear in the Inbox preview panel on the right.

    Under Sender details, your From name and Sender’s email address are pre-filled from your account settings. Update them here if needed. When you are ready, click Save and continue at the top right.

    Step 3 — Choose a Design Method and Template

    On the Design your email page, choose how you want to build your email. There are three options at the top:

    Drag and drop builder — A visual editor where you add content blocks without writing code. This is the best option for beginners.

    Plain text email — A simple text-only email with no images or formatting.

    Custom HTML email — For users who want to paste or write their own HTML code.

    If you selected Drag and drop builder, you will see a template gallery below. Browse categories like All templates, Branded templates, Themed templates, or B2B templates to find a starting point, or select Blank template to start from scratch. Click a template to select it, then click Start creating in the top-right corner.

    Step 4 — Build Your Email Content

    You are now in the email editor. The main canvas in the center is where your email takes shape. Use the left sidebar to add content:

    Click the Building blocks icon (the grid icon) in the sidebar to see the available content blocks: Headline, Paragraph, Image, Button, Separator, Logo, Video, Social, Product, Menu, and Custom HTML. Drag a block from the sidebar onto the canvas, or click the + icon on the canvas to add a block.

    Click any block on the canvas to select it and edit its content or settings. To preview your email on desktop and mobile, click the eye icon in the top toolbar. When your design is ready, click Save & continue in the top-right corner.

    Step 5 — Choose Your Recipients

    On the Recipients page, you decide who receives your campaign. At the top, you will see Selected recipients with a count of zero.

    To send to everyone in your account, check the box next to All active subscribers. To send to a specific group or segment, find it in the Send to these groups/segments list below and check the box next to it. You can also click Exclude groups/segments at the bottom to prevent certain contacts from receiving the campaign.

    Once you have selected at least one audience, the Save and continue button in the top-right corner becomes active. Click it to proceed.

    Step 6 — Review Your Campaign

    On the Review and schedule page, Sender displays a summary of your campaign. The left side shows two cards:

    Settings — Displays your email subject, preview text, sender name, and sender email address. Click Edit to go back and make changes.

    Recipients — Shows the total number of subscribers who will receive the campaign. Click Edit to change your audience.

    On the right side, you can see a visual preview of your email. Use the Preview, View plain text version, and Send test email tabs to check your email before sending. Sending a test email to yourself is a good way to catch any issues.

    Step 7 — Send or Schedule Your Campaign

    When you are satisfied with everything, you have two options at the top right and bottom of the page:

    Send now — Delivers the campaign to your selected recipients immediately.

    Schedule — Opens a calendar where you pick a future date and time for the campaign to be sent automatically.

    If you are not ready yet, click I’ll finish later to save the campaign as a draft. You can return to it anytime from the Email campaigns page.

    What You’ve Accomplished

    You have created and sent (or scheduled) your first email campaign in Sender. Your email is on its way to your subscribers. You have also learned how to navigate the campaign creation workflow, design an email using the drag-and-drop editor, select your audience, and review your campaign before sending.

    What to Do Next

    Check your campaign results — After your campaign is sent, go to Email campaigns in the left sidebar and click on your campaign to view its performance report, including delivery, open, and click rates. See the Help Center article on campaign reports for details.

    Add more subscribers — Go to Subscribers in the left sidebar to add contacts manually, import a CSV or XLS file, or connect a signup form. The more subscribers you have, the greater your campaign’s reach. See the Help Center article on importing subscribers.

    Create a signup form — Click Forms in the left sidebar to build a form you can embed on your website to collect new subscribers automatically. See the Help Center article on creating signup forms.

    Set up an automation — Click Automations in the left sidebar to create automated email sequences, such as a welcome email that sends when someone subscribes. See the Help Center article on getting started with automations.

    Verify your sending domain — Go to Account settingsDomains to add and verify your domain. This improves email deliverability — the likelihood that your emails land in your subscribers’ inboxes rather than their spam folders. See the Help Center article on domain verification for step-by-step instructions.

    Common Issues

    The Save and continue button is grayed out → This happens when a required field is empty. Make sure you have filled in the Email subject on the Settings page, or selected at least one recipient on the Recipients page. Complete the required fields and the button will become active.

    I do not see any subscribers on the Recipients page → You have not added any contacts to your Sender account yet. Go to Subscribers in the left sidebar and add at least one subscriber manually or import a list before creating your campaign.

    My email looks different from the preview → Email clients (like Gmail, Outlook, or Apple Mail) render emails differently. Use the Send test email option on the Review and schedule page to send a test to your own inbox and check how it looks in your email client before sending to your full list.

    I cannot find my saved draft → All saved drafts appear on the Email campaigns page with a DRAFT label. Click Email campaigns in the left sidebar and look for your campaign in the list. Use the search bar at the top to find it by name.

    My campaign was sent but subscribers say they did not receive it → Emails may land in spam or junk folders, especially if your sending domain is not verified. Ask subscribers to check those folders. For long-term deliverability, verify your domain in Account settingsDomains. See the Help Center article on domain verification.

    FAQs

    Can I edit a campaign after sending it? No. Once a campaign is sent, it cannot be changed. You can duplicate the campaign from the Email campaigns page and make edits to the copy if you want to send a revised version.

    Can I send a campaign to a specific group of subscribers? Yes. On the Recipients step, instead of selecting All active subscribers, check the box next to a specific group or segment in the list. You can select multiple groups or segments, and you can also exclude certain ones.

    What is the difference between Send now and Schedule? Send now delivers your campaign immediately. Schedule lets you pick a future date and time so Sender sends the campaign automatically at that time. Scheduling is useful if you want to reach subscribers during a specific time window.

    Can I send a test email before sending the campaign to everyone? Yes. On the Review and schedule page (the final step), click the Send test email tab above the email preview. You can enter your own email address to receive a test copy and check how the email looks in your inbox.

    What happens if I click I’ll finish later? Your campaign is saved as a draft. You can find it on the Email campaigns page with a DRAFT label. Click the edit icon next to it to pick up where you left off. Nothing is sent until you click Send now or Schedule.

    Is Sender free to use? Sender offers a free plan that includes a generous subscriber and email send limit. You can upgrade to a paid plan at any time from Account settingsBilling if you need higher limits or additional features.

  • Viasocket Integration

    viaSocket is an AI-powered workflow automation platform that helps you connect thousands of apps — no coding required. By linking Sender to your favorite tools, you can automate repetitive tasks, keep your subscriber lists in sync, and trigger email campaigns based on real-time events happening across your entire tech stack.

    Why connect Sender with viaSocket?

    • Automatically add new subscribers to Sender from other apps like Google Sheets, Airtable and others.
    • Create and organize subscriber groups automatically based on events in connected apps.
    • Trigger new email campaigns in Sender whenever a specific action happens in another tool.
    • Keep subscriber data up to date by syncing changes from your CRM, e-commerce platform, or other sources.
    • Remove or unsubscribe contacts in Sender automatically when they are removed from another platform.
    • Connect Sender with thousands of apps — including Slack, Zendesk, Google Sheets, Razorpay, and many more.

    How to integrate Sender with viaSocket?

    1. Go to viasocket.com and log in or create a free account.
    2. Click “Create new flow” to start building your automation workflow.

    In the flow builder, name your flow and click “Select trigger” to search for the app you want to connect with Sender. For this tutorial, we will connect Sender and Google Sheets.

    Once the application is selected, you will need to choose the trigger that would initiate the connection.

    In this case we will choose “New or Updated Spreadsheet Row”.

    You can choose the trigger to run every 5min, 15min, 1h, 12h or 24h.

    To establish the integration, you will need to connect your Google Sheets account.

    Once you connection is done, you will be asked to choose the Spreadsheet and its Sheet that would be used for the integration.

    You can trigger the connection when the record is new or updated, when it is only new, or when it is only updated.

    Don’t forget to indicate whether your sheet includes a column name to avoid missing any of the records.

    Save the step once it is fully setup.

    To setup Sender part of the integration, click “Add step” under “Do” (action part of the conntection) and search for Sender in the app list.

    Once the app is chosen, you will be given a list of actions that can be performed when the tigger fires up:

    DELETE

    • Delete Field
    • Delete Group
    • Delete Segment
    • Delete Subscribers
    • Remove Subscribers From Group

    GET

    • Get Segment Details

    • Get Subscriber’s Data

    OTHERS

    • Custom API

    UPDATE

    • Rename Field

    • Rename Group

    • Update Subscriber

    CREATE

    • Add Subscriber to Group

    • Create Campaign

    • Create Field

    • Create Group

    • Create Subscriber


    For this tutorial, we will choose “Update_subscriber”.

    To finalize the integration, Sender accout has to be connected too. This will require you to provide an API token from your Sender account. Click here to learn how to create your account API token.

    The updated subscriber can be recognized by their email addres or their phone number.

    To make sure that the subscriber is properly added to your Sender account, you have to select which collumn has data for which custom field. This is where having column names helps a lot.

    Then, you need to select group(s) to which your subscribers will be added in Sender.

    Lastly, you can choose to activate an automation workflow when the connection is triggered and select your subscribers’ status for all the channels upon sync:

    • Active
    • Unsubscribed
    • Bounced
    • Spam-reported

    You connection is now fully setup, all that is left is to “Go Live”.

    From now on, every new row added to our Google Sheet will automatically create a new subscriber in Sender.


    If you got stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] – we’re here to help 24/7.

  • Manage Brand Assets

    Brand Assets is a powerful feature that allows you to save your brand’s visual identity—including your logo, colors, fonts, and social media links—so they are automatically applied to all your email campaigns and templates.

    This ensures consistent branding across all your marketing communications without having to manually configure each campaign.

    How to access brand assets

    1. Log in to your Sender account.
    2. Go to Settings.
    3. Select “Brand assets” from the settings menu.

    Upload your logo

    Your logo will be displayed anywhere you have a logo block in your email campaigns. To upload your logo:

    1. Click the “Upload image” button in the logo section.
    2. Select an image file from your computer.
    3. Your logo will appear in the preview area.

    Supported formats: JPG, PNG, or GIF.

    Tip: Make sure your logo is visible on a dark background, as some email templates may use darker color schemes.

    Select a Color Theme

    You can customize your brand colors to match your visual identity. Sender offers preset color themes, or you can manually adjust each color value to perfectly match your brand guidelines.

    The following color settings are available:

    • Dark background color: this color will be applied to the chosen email backgrounds. In your design, make sure to use well-contrasting text and button colors on dark backgrounds.
    • Light background color: this color will be applied to the chosen email backgrounds. In your design, make sure to use well-contrasting text and button colors on light backgrounds.
    • Headline color: The color applied to your email headings and titles.
    • Paragraph text color: The color used for body text in your emails.
    • Accent color (for buttons and links): choose a color for buttons and links that is well visible on both dark and light backgrouds.

    To customize colors:

    1. Select a preset theme from the dropdown menu (e.g., “Bold Essence”), or
    2. Enter specific hex color values (e.g., #F87435) in each color field to match your brand exactly.

    Choose Fonts

    Typography plays a crucial role in brand recognition. Sender allows you to set both primary fonts and fallback options to ensure your emails look great across all email clients.

    Font settings include:

    • Headline font: The primary font for your email headings (e.g., Fira Sans).
    • Paragraph text font: The primary font for body text (e.g., DM Sans).
    • 1st fallback headline/paragraph: A secondary font that displays if the primary font isn’t available in the recipient’s email client.
    • 2nd fallback headline/paragraph: A tertiary font option for maximum compatibility.

    To select fonts:

    1. Click the dropdown menu next to each font setting.
    2. Select your preferred font from the available options.
    3. Set fallback fonts to ensure consistent display across different email clients.

    Note: You can preview how your emails will look with custom fonts versus fallback fonts using the toggle buttons in the Email example preview panel on the right side of the screen.

    Setup Social Links

    Add your social media profiles so they can be easily included in your email campaigns. Social icons will automatically appear in templates that include a social block.

    To add a social link:

    1. Click “+ Add social link” button.
    2. Select the social media platform.
    3. Enter your profile URL.

    Automatic Brand Setup

    Want to save time? Sender can automatically import your brand assets from your website. This feature extracts your brand colors, fonts, logo, and social links directly from your website URL.

    To use automatic brand setup:

    1. Scroll down to the “Automatic brand setup” section.
    2. Enter your website URL in the input field (e.g., https://sender.net).
    3. Click the “Import” button.
    4. Review the imported settings and make any necessary adjustments.

    Note: New styles will be applied to all new branded blocks and email templates. Existing campaigns will remain unchanged unless edited.

    Preview Your Brand Settings

    The right side of the Brand Settings page displays a live email preview showing how your brand settings will look in an actual email campaign. This preview updates in real-time as you make changes.

    Use the preview to:

    • See how your logo appears in the email header.
    • Check how your color scheme looks across different email sections.
    • Toggle between “Custom fonts” and “Fallback fonts” to see how your emails will render in different email clients.
    • Verify that buttons and links display correctly with your accent color.

    Once you’re satisfied with your brand configuration, click the “Save brand” button in the top right corner.


    If you got stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] – we’re here to help 24/7.

  • Migrate to Sender

    Migrating your subscriber list to Sender is easy and straightforward. We have multiple methods to help you transfer your contacts seamlessly, whether you’re moving from another email marketing platform or importing your existing list.

    This guide will walk you through all available migration options, helping you choose the best method for your needs.

    How to migrate from Mailchimp or GetResponse?

    We have dedicated articles for an easy to follow step-by-step instructions on how to migrate from these two platforms.

    Follow this comprehensive tutorial to migrate from Mailchimp. 

    Click here for a tutorial on how to migrate from GetResponse.

    Migrating from any other tool

    File Upload Import

    If you prefer to upload your subscriber list directly, Sender supports multiple file formats.

    Supported file formats:

    • .csv (Comma-Separated Values)
    • .txt (Text files)
    • MS Excel (.xlsx)

    NOTE: Maximum file size: 64MB

    Step-by-Step File Upload Process

    1. Navigate to Subscribers > “Add subscribers”
    2. Click “Import via file” option
    3. Upload your file (drag and drop or browse)

    If your subscribers are in another type of file and you need a clean template to add all of your subscribers before import, we provide a downloadable Excel and CSV templates.

    Copy/paste method

    For smaller lists or quick additions, the manual copy & paste method is convenient.

    1. Go to Subscribers > “Add subscribers”
    2. Select the “Copy & Paste subscriber list” option

    3. Paste your subscriber data directly into the text field

    4. Ensure your data includes email addresses or phone number (required)

    5. Each subscriber should be added into a new row with their additional information separated by commas

    Next step is the same, regardless if you chose to import from a file or via the copy/past method.

    After uploading your file or pasting your subscribers, you’ll need to map your columns to Sender’s custom fields:

    If you do not have a custom field for a particular column of data, you can create one by clicking “Create a new field” at the bottom of the drop-down bar or skip the collumn all together if you don’t need that information imported.

    You can also skip all unselected columns if you have all of unneccessary information and do not want to skip them one-by-one.

    When importing subscribers, you’ll be prompted to assign them to a group. Groups help you organize your contacts and target specific audiences with your campaigns.

    You can select one or multiple groups upon import. You can also skip this step but it may be hard for you to differenciate your subscribers in the future when you are sending campaigns. 

    Selecting recipients for email and SMS campaigns has to be done by choosing groups, segments or all active subscribers, therefore we suggest making sure that each subscriber belongs to at least one group to make it easier for yourself in the future.

    Once you are all set, click “Start import”.

    After that, you will see your import progress and results. 

    • New subscribers – subscribers that have been imported to your list for the first time.
    • Subscribers updated – subscribers that have been imported in your list in the past. After import, their custom field information has been updated with the new data provided during the upload.
    • Duplicate subscribers – if the file contained the same email address more than once, only one copy of that email address will be uploaded to prevent duplicate imports.
    • Invalid emails – email addresses that contains typos, unsupported characters or unfinished email addresses.
    • Duplicate phone numbers – if the file contained the same phone number more than once, only one copy of that phone number will be uploaded to prevent duplicate imports.
    • Invalid phone numbers – partial phone number or the phone number that is missing a plus sign and country code.

     

    Best Practices for Migration

    Before You Import

    1. Clean your list – remove inactive or invalid email addresses,
    2. Organize your data – structure your file with clear column headers,
    3. Prepare custom fields – decide which additional data you want to track,
    4. Plan your groups – determine how you’ll segment your audience.

    During Import

    1. Assign to appropriate groups – don’t skip this step to prepare well for future sends,
    2. Map all relevant fields – ensure data transfers to the correct custom fields,
    3. Review field mapping – double-check before finalizing the import,
    4. Start with a test – if you have a large list, import a small batch first.

    After Import

    1. Verify subscriber count – ensure all contacts imported successfully,
    2. Check custom field data – confirm information is mapped correctly,
    3. Review group assignments – make sure subscribers are in the right groups,
    4. Send a welcome campaign – re-engage your migrated subscribers.

    Troubleshooting Common Issues

    Import Fails

    • Check file format – ensure you’re using .csv, .txt, or .xlsx,
    • Verify file size – must be under 64MB,
    • Remove special characters – some characters may cause import errors,
    • Check email format – all emails must be valid addresses.

    Missing Custom Field Data

    • Review field mapping – make sure columns were assigned correctly,
    • Check data format – dates should be in YYYY-MM-DD format.

    Subscribers Not Showing in Groups

    • Assign during import – groups must be selected when importing,
    • Manually add to groups – you can assign groups after import via the dashboard.

    That’s it!

    If you are stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] – we’re here to help 24/7.

  • Enable Shopify Theme App Extension

    Once you connected your Shopify store to Sender, it is important to enable theme app extension to add subscription forms with less hassle.

    Here is how the whole process looks like:

    How to insert your embedded form

    Go to your Sender account, access the Form section and head to the overview page of the form that you want to embed.

    Look for the form ID and copy it.

    Locating the form ID

    Now head back to your store site editor and choose to add a section and in the Apps section choose Sender – Embedded Form.

    Shopify App section

    You will be asked to enter the form ID you have just copied. Once you paste it, the form will be displayed immediately. Make alignment changes if needed.

    Entering form ID
    Form preview

    If you got stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] – we’re here to help 24/7.

  • Getting Started with Transactional Emails

    Transactional emails are automated messages sent to individual users in response to specific actions, such as password resets, order confirmations, welcome emails, and account notifications. This guide will walk you through setting up transactional email sending in Sender.

    Before you begin, make sure you have verified your domain and its DNS parameters (SPF, DKIM and DMARC) in your Sender account. Click here for detailed instructions on how to do that. 

    Once your domain is verified, you can start sending transactional emails using either the API or SMTP relay.

    Sending Emails with API

    API allows you to send transactional emails programmatically. We support multiple programming languages and provide ready-to-use code examples.

    Sender’s API documentation can be found here.

    API documentation for sending an email campaign without a template can be found here.

    Getting Started with API

    1. Navigate to your Setup instructions page in Sender
    2. Verify that your sending domain is authenticated
    3. Create an API token (if you haven’t already)
    4. Choose your preferred integration method from the available options:
    • cURL – for quick testing via command line
    • Laravel – PHP framework with built-in mail support
    • PHP – native PHP implementation
    • Node.js – JavaScript/Node.js integration
    • SMTP – standard SMTP relay option

    API Integration Examples

    cURL Integration

    The quickest way to test sending emails is using cURL. Copy the following command into your terminal:

    curl "https://api.sender.net/v2/message/send" \
    -X POST \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_TOKEN_HERE" \
    -d '{
    "from": {
    "email": "[email protected]",
    "name": "Gabrielle"
    },
    "to": {
    "email": "[email protected]",
    "name": "John"
    },
    "subject": "Hello from Sender!",
    "html": "Hello, and happy sending!"
    }'

    Important: Replace YOUR_TOKEN_HERE  with your actual API token, and update the FROM and TO email addresses. The FROM email address must match your verified domain.

    Once you send your email, you can check the status of your message in Logs.

    Logs can be filtered by event types:

    • Emails sent
    • Opens
    • Clicks
    • Bounces
    • Unsubscribes
    • Spam reports

    You can also search for a log by email address, the sender’s domain and campaign name.

    You can choose the date range for the logs that you are interested in.

    Laravel Integration

    Sender provides a Laravel mail transport package for seamless integration with Laravel’s Mail facade:

    1. Install the SDK (auto-discovery registers SenderServiceProvider):

    composer require sendernet/sender-transactional-php

    2. Run the installer for guided setup:

    php artisan sender:install

    3. Configure environment variables:

    SENDER_API_KEY=your_api_key
    MAIL_MAILER=sender

    4. Use Laravel’s mailing features as usual. Any SenderNetRequestException raised by the SDK is converted into Symfony\Component\Mailer\Exception\TransportException with the original message preserved.

    PHP Integration

    For standard PHP applications, install the recommended HTTP client and SDK:

    Install the HTTP client and factories:

    composer require php-http/guzzle7-adapter nyholm/psr7

    Install the SDK:

    composer require sendernet/sender-transactional-php

    Example usage:

    use SenderNet\SenderNet;
    use SenderNet\Helpers\Builder\EmailParams;
    use SenderNet\Helpers\Builder\Recipient;
    
    $sender = new SenderNet(['api_key' => getenv('SENDER_API_KEY')]);
    
    $emailParams = (new EmailParams())
        ->setFrom('[email protected]')
        ->setFromName('Gabrielle')
        ->setRecipients([new Recipient('[email protected]', 'User')])
        ->setSubject('Welcome')
        ->setText('Thanks for signing up\!');
    
    $response = $sender->email->send($emailParams);

    Sending Emails with SMTP

    SMTP (Simple Mail Transfer Protocol) is a standard protocol for sending emails. Many applications and content management systems support SMTP configuration.

    Setting Up SMTP

    1. Navigate to your Setup instructions page in Sender
    2. Select the SMTP tab
    3. Click Create SMTP user to generate your credentials

    You’ll receive the following information:

    • Server: smtp.sender.net
    • Ports: 25, 2525, or 587
    • Authentication: PLAIN or LOGIN over TLS
    • Username: (automatically generated, e.g., Gabrielle_e736w1)
    • Password: (provided when creating the user; safe it as it will only be shown once)

    Configuring SMTP in Your Application

    Enter the following settings in your application or CMS:

    • SMTP Host/Server: smtp.sender.net
    • Port: 25, 2525, or 587 (choose based on your server configuration)
    • Encryption: TLS or STARTTLS
    • Username: Your generated SMTP username
    • Password: Your SMTP password

    Important: The from email address must match your verified domain.

    Managing SMTP Users

    From the SMTP Users section, you can:

    • Edit user settings
    • Regenerate password if credentials are compromised or you lost the password
    • Delete users you no longer need

    JavaScript/Node.js Integration

    Here’s a complete example of sending a transactional email:

    var axios = require('axios');

    Configuration Parameters

    URL Structure: Replace CAMPAIGN_ID with your actual campaign ID from your Sender account.

    Authentication: Replace PLACE_YOUR_API_TOKEN_HERE with your API token, which you can find in your Sender account settings.

    Request Body:

    • to: Recipient information including email address and name
    • variables: Custom variables that can be used in your email template (like firstname, lastname)
    • text: The email content or a trigger for your template

    All other available parameters can be found at api.sender.net.

    API Features and Capabilities

    Sending to Multiple Recipients

    For individual personalized emails: Make separate API calls for each recipient to ensure personalization and privacy.

    For bulk sending: Use Sender’s bulk endpoint to send to multiple recipients efficiently. Note that when multiple recipients are added to the same “to” field, they will be able to see each other’s email addresses.

    Adding Attachments

    You can attach files to your transactional emails by including file URLs in your API request:

    {
      "attachments": {
        "invoice.pdf": "https://yourdomain.com/files/invoice.pdf",
        "receipt.pdf": "https://yourdomain.com/files/receipt.pdf"
      }
    }

    Attachment requirements:

    • Files must be accessible via HTTPS URLs
    • Maximum file size: 25MB per attachment
    • Supported formats: PDF, Office documents, images, ZIP files, and more

    Send Transactional Emails with SMTP via Python

    1. Generate your Credentials

    1. Navigate to the Transactional Emails section in your Sender dashboard and click on Setup instructions.
    2. Select the SMTP tab.
    3. Click Add SMTP User to generate a dedicated alphanumeric username (e.g., USER_elRMvr) and password.

    2. Input Parameters in Your Application

    Enter the following settings exactly within your application framework or environment config:

    • SMTP Host/Server: smtp.sender.net
    • Port: 587 (Recommended for modern web frameworks with STARTTLS) or 25 / 2525.
    • Encryption: TLS / STARTTLS
    • Username: Your generated Sender SMTP username.
    • Password: Your generated SMTP password.

    3. Python Integration Example

    4. Common Pitfalls for Python SMTP Users

    • The send_message() Header Wrap: Python’s high-level server.send_message() helper automatically formats email headers. If the generated multi-part boundary line is long, Python splits it across multiple lines but often drops the required leading whitespace tab. This triggers a 550 Unable to parse msg. rejection from our inbound servers. Solution: Use outer_msg.as_bytes(policy=email.policy.SMTP) and pass the resulting bytes into server.sendmail() instead.
    • Using the SMTP Username as the Sender Address: The alphanumeric SMTP username generated in your dashboard (e.g., USER_elRMvr) is an API credential, not an email address. Placing a bare username string inside your From: or Message-ID fields will break protocol parser validation. Solution: Always formulate fully qualified addresses ([email protected]) inside your message header blocks.
    • Flawed MIME Hierarchy Nesting: When sending text alongside attachments, failing to nest your objects correctly causes modern email clients to display raw payload code or drop files entirely. Solution: Maintain an outer multipart/mixed structure for the attachment layout and embed an inner multipart/alternative structure for your plaintext and HTML body options.

    5. Method 1 Frequently Asked Questions (FAQs)

    Q: Why does my Python script hang or experience socket connection timeouts?
    A: Most cloud computing providers (such as AWS EC2, DigitalOcean, or Linode) and consumer ISPs block outbound traffic on Port 25 to mitigate spam. Ensure your application configuration targets Port 587 with STARTTLS enabled.

    Q: Can I use Port 465 with the provided code snippet?
    A: No. Port 465 is not supported, as it’s not RFC compliant. The provided code snippet uses Port 587, which initializes an unencrypted connection and upgrades it safely via opportunistic TLS.

    Q: How do I handle file attachments that contain international characters or non-ASCII names?
    A: Standard ASCII strings cannot natively support international character variants in email headers. If you attempt to pass a filename with special characters directly into add_header, it will corrupt your message formatting. To fix this, explicitly encode the filename parameters using a UTF-8 tuple inside the attachment block:

    attachment.add_header(
        "Content-Disposition", 
        "attachment", 
        filename=('utf-8', '', 'invoice.pdf')
    )

    Using Transactional Email Templates

    Sender allows you to create and use email templates with your transactional emails for consistent branding and easier management.

    API documentation for sending a transactional email with a template can be found here.

    Creating a Template

    1. Navigate to the Transactional email overview page
    2. Create or select an existing template
    3. Complete the Settings, Design, and API steps
    4. In the API step, select your preferred programming language (JavaScript, PHP, or Python)

    Template API Examples

    Each template has a unique campaign ID that you’ll use in your API calls. You can find this ID in the API example section of your template.

    The API example section provides language-specific code examples with your template ID already included:

    • JavaScript – Using axios
    • PHP – Native PHP implementation
    • Python – Using requests library

    Important: Replace PLACE_YOUR_API_TOKEN_HERE with your actual API token in the code examples.

    Sending a Test Email

    Before going live, you can test your template:

    1. Go to the Transactional email overview page
    2. Enter your email address
    3. Click Send to receive a test email

    Variables

    Personalize your transactional emails using variables and dynamic content to create unique experiences for each recipient.

    Using Liquid Tags

    Liquid tags allow you to insert dynamic content into your emails. Liquid tags should be enclosed in double curly brackets:

    Hello {{firstname}},  Your order {{order_id}} has been confirmed.

    When sending via API, pass the personalization data:

    {
      "to": {
        "email": "[email protected]",
        "name": "John"
      },
      "subject": "Order Confirmation",
      "html": "Hello {{firstname}}, your order {{order_id}} is confirmed.",
      "variables": {
        "firstname": "John",
        "order_id": "12345"
      }
    }

    Liquid tag rules:

    • Must be enclosed in double curly brackets: {{variable}}
    • May contain alphanumeric characters and underscores
    • Must not start with a number or underscore
    • Are case-sensitive: {{VAR}} is different from {{var}}

    Conditional Content

    Show different content based on conditions, e.g.:

    {% if subscription_level == 'premium' %} You’re enjoying all premium features 🎉 {% else %} Upgrade your subscription to access premium features. {% endif %}

    Common Issues and Solutions

    Email not sending:

    • Verify that your from email address matches your verified domain,
    • Check that your API token or SMTP credentials are valid and active,
    • Ensure you’re providing either HTML content, text content, or a template ID,
    • Confirm your request format follows the API documentation exactly,
    • Check that all required fields are included in your request.

    Authentication errors:

    • Confirm your API token is correct and hasn’t been regenerated
    • Esure the API token has not expired (use “Forever” for transactional emails)
    • For SMTP, verify your username and password are entered correctly and without extra spaces
    • Check that your account has sending permissions and is not suspended

    Recipient not receiving emails:

    • Check if the subscriber status is active (not bounced, unsubscribed, or reported spam)
    • Verify the recipient’s email address is valid and has no typos
    • Look for bounce or spam complaint notifications in your activity log
    • Check if your domain’s sending reputation is healthy
    • Ensure SPF, DKIM, and DMARC records for your domain are properly configured and verified

    Template issues:

    • Verify your Campaign ID is correct in the API call
    • Check that all liquid tags are properly closed with matching brackets
    • Test liquid tag syntax with sample data before sending live
    • Ensure custom fields referenced in liquid tags exist in your subscriber data, if not – set up default values.

    API Error Codes

    Understanding error codes helps you quickly identify and fix issues:

    Code Meaning Common Solution
    400 Bad request Review your request format and ensure all JSON is valid
    401 Unauthorized Verify your API token is correct and properly formatted
    403 Forbidden Check your account permissions and sending limits
    404 Not found Verify the endpoint URL and Campaign ID are correct
    422 Validation error Review the error message for specific field issues
    429 Too many requests Reduce your request rate or implement exponential backoff
    500 Server error Retry your request after a brief delay

    Common 422 Validation Errors

    Error Message What It Means Solution
    “From email must be verified” The sender address doesn’t match your verified domain Use an email address from your verified domain
    “Recipient email required” No recipient specified Include at least one recipient in the “to” field
    “Invalid email format” Email address is malformed Check for typos and proper email format ([email protected])
    “Content required” No email content provided Include either “html” or “text” field in your request
    “Campaign not found” Invalid Campaign ID Verify the Campaign ID from your template settings
    “Rate limit exceeded” Too many requests sent Implement rate limiting in your application

    Email status meaning

    Track your email delivery with these status indicators:


    If you got stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] – we’re here to help 24/7.

  • Transactional Email Feature

    We are excited to announce that Transactional Emails are now available across all Sender plans—from Free to Enterprise.

    Whether you need to send password resets, order confirmations, or shipping notifications, you can now manage everything within the same ecosystem you use for your marketing campaigns. We’ve designed our transactional infrastructure to ensure high-speed delivery, robust security, and developer-friendly integration.

    Here is an overview of the features available and a breakdown of plan-specific limits.

    What features are included?

    Our transactional email suite is built to make your life easier, whether you are a developer setting up the API or a marketer analyzing delivery reports.

    • API & SMTP: Choose the setup that fits your workflow. Hit our REST endpoint or use standard SMTP relay.


    • Libraries & Documentation: We provide setup guides to help you get up and running quickly.


    Powerful Content & Personalization

    • Dynamic Templates: Manage your transactional templates (like invoices or welcome emails) directly in Sender. You can update copy or design without touching your codebase.


    • Liquid Syntax: easily drop in variables like customer names, order totals, or conditional content based on user data.


    • Attachments: Send PDFs, invoices, or documents up to 10MB. All files are virus-scanned and transferred securely.


    Analytics & Tracking

    • Real-time Analytics: Track every step from “send” to “inbox.”


    • Detailed Logs: Search and filter records of every email sent to troubleshoot delivery issues.


    • Webhooks: Get instant notifications when emails are delivered, opened, or clicked to trigger follow-up actions in your own systems.


    Security & Deliverability

    • High-Priority Sending: We utilize a low-latency send path and smart queuing to ensure time-sensitive emails (like OTPs) land instantly.


    • Built-in Authentication: We handle SPF, DKIM, and DMARC support to protect your domain reputation.


    • Suppression Management: Automatic handling of bounces and complaints to keep your list clean.


    Feature Availability by Plan

    While transactional email capability is unlocked for all users, specific limits regarding data retention, team access, and infrastructure vary by plan tier.

    Features Available on ALL Plans

    Every plan (Free, Standard, Professional, Enterprise, and Prepaid credits) includes:

    • Full access to API and SMTP.


    • Dynamic Templates and Liquid syntax.


    • Real-time analytics and engagement tracking.


    • Standard Domain Authentication (SPF/DKIM/DMARC).


    • Unlimited Custom Sending Domains.


    • TLS Encryption and GDPR Compliance.


    Plan-Specific Limits

    Below is a breakdown of how the plans differ regarding advanced features and retention limits:

    Free Plan

    • Webhooks: 1 Event Webhook.


    • Teammate Permissions: 1 User.


    • Log & Bounce Retention: 1 Day.


    • Support: Standard knowledge center access.


    Standard & Prepaid Credit Plans

    • Webhooks: 5 Event Webhooks.


    • Teammate Permissions: 3 Users.


    • Log & Bounce Retention: 1 Day.


    • Support: Access to deliverability support.


    Professional Plan

    • Webhooks: Unlimited.


    • Dedicated IP: 1 Included (Pooled IP also available).


    • Teammate Permissions: 10 Users.


    • Log & Bounce Retention: 5 Days.


    • Support: Priority deliverability support.


    Enterprise Plan

    • Webhooks: Unlimited.


    • Dedicated IP: 1 Included.


    • Teammate Permissions: Unlimited.


    • Log & Bounce Retention: 30 Days.


    • Security: Single Sign-On (SSO) included.


    Ready to get started?

    To begin sending transactional emails, navigate to the Transactional emails section in your dashboard to generate your API keys or configure your SMTP settings.

    That’s it!

    If you got stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] we’re here to help 24/7.

  • Merge SPF records

    If your domain is used by multiple services to send emails e.g. Sender, Gmail, or your web host, you need to merge SPF records into one. 

    Having multiple SPF records for a domain causes validation errors, which can lead to email delivery issues.

    What Is an SPF Record?

    An SPF (Sender Policy Framework) record is a type of DNS TXT record that tells mail servers which services are allowed to send emails on your domain’s behalf.

    Example of a simple SPF record:

    v=spf1 include:sendersrv.com ~all

    Why You Should Merge SPF Records?

    You can only have one SPF record per domain.

    If you add a new email-sending service and create another TXT record (for example, one for Google Workspace and one for Sender), your SPF setup becomes invalid.

    Incorrect setup:

    v=spf1 include:_spf.google.com ~all
    v=spf1 include:sendersrv.com ~all

    Correct setup (merged):

    v=spf1 include:_spf.google.com include:sendersrv.com ~all

    How to Merge SPF Records

    1. Find all your existing SPF records

    Check your DNS settings for TXT records starting with v=spf1

    Common examples:

    • Google Workspace → v=spf1 include:_spf.google.com ~all
    • Microsoft 365 → v=spf1 include:spf.protection.outlook.com ~all
    • Sender → v=spf1 include:sendersrv.com ~all

    2. Combine all “include” mechanisms into one record

    • Keep only one v=spf1 at the start.
    • Add all include: entries you need (separated by spaces).
    • End with ~all or -all.

    3. Save your final merged record

    Example:

    v=spf1 include:_spf.google.com include:sendersrv.com ~all

    4. Wait for DNS propagation

    Changes may take up to 48 hours to take effect.

    Examples of Common Merged SPF Records:

    Scenario

    Correct SPF Record

    Sender + Google Workspace

    v=spf1 include:_spf.google.com include:sendersrv.com ~all

    Sender + Microsoft 365

    v=spf1 include:spf.protection.outlook.com include:sendersrv.com ~all

    Sender + Web Host (Hostinger)

    v=spf1 include:_spf.hostinger.com include:sendersrv.com ~all

    Sender + Gmail + Zoho

    v=spf1 include:_spf.google.com include:zoho.eu include:sendersrv.com ~all

    Sender + Domain’s Own Mail Server

    (MX allowed)

    v=spf1 mx include:sendersrv.com ~all

    Sender + Custom Web Server

    (A record allowed)

    v=spf1 a include:sendersrv.com ~all

    Sender + Dedicated IP

    v=spf1 ip4:206.0.114.42 include:sendersrv.com ~all

    If unsure, contact your DNS provider or Sender’s support for help verifying that you merged the record correctly.

    Once you are done, head to your Sender account, go to Account Settings -> Domains and click “Recheck DNS records” next to the domain that you were merging records for.

    If everything is merged correctly, you will receive a green verification mark. 

    Please note that it may take up to 48 hours for the records to propagate.

    That’s it!

    If you got stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] – we’re here to help 24/7.

  • Troubleshoot form issues

    Encountering issues with your sign-up forms? This guide covers common problems and how to resolve them.

    Form not displaying

    Problem: Your form isn’t showing up on your website or landing page.

    Solutions:

    • Verify the embed code is correctly placed in your website’s HTML
    • Check that JavaScript is enabled on your website
    • Clear your browser cache and refresh the page
    • Ensure there are no conflicting scripts on your page that might block the form
    • Check if your form is set to active/published status

    Submissions not being received

    Problem: People are completing the form, but you’re not receiving the submissions.

    Solutions:

    • Verify the form is connected to the correct subscriber list

    • Check your email notifications settings to ensure you’re receiving submission alerts

    • Look in your spam or junk folder for notification emails

    • Review your form’s submission statistics to confirm data is being captured

    reCAPTCHA issues

    Problem: The reCAPTCHA verification is causing problems for subscribers.

    Solutions:

    • Verify that “Use Google reCAPTCHA” is properly enabled in your form’s Design > Settings
    • Test the form in different browsers to identify browser-specific issues
    • Ensure subscribers have JavaScript enabled in their browsers
    • Check that your website’s security settings or any extensions aren’t blocking Google services
    • Try disabling and re-enabling reCAPTCHA to reset the configuration

    Form fields not working

    Problem: Form fields aren’t accepting input or validation isn’t working correctly.

    Solutions:

    • Check that all required fields are properly marked in your form settings
    • Verify field validation rules are correctly configured
    • Ensure custom fields are properly mapped to subscriber properties
    • Test the form in different browsers and devices
    • Review any custom CSS or JavaScript that might interfere with field functionality

    Error messages appearing

    Problem: Subscribers see error messages when trying to submit the form.

    Solutions:

    • Review the specific error message to identify the issue
    • Verify all required fields are filled out correctly
    • Check email address format validation
    • Ensure phone number fields accept the correct format

    Getting additional help

    If you’ve tried these solutions and are still experiencing issues:

    • Document the specific problem with screenshots
    • Note which browser and device you’re testing on
    • Check the browser console for any error messages
    • Review recent changes made to the form or website
    • Contact support with detailed information about the issue

    Best practices to prevent issues

    • Test regularly – Test your forms after making any changes to ensure they work correctly.
    • Use standard formats – Stick to standard email and phone number formats for better compatibility.
    • Keep it simple – Avoid overly complex forms with too many fields or custom scripts.
    • Monitor submissions – Regularly check that submissions are coming through as expected.
    • Stay updated – Keep your embed codes and integrations up to date with the latest versions.

    If you got stuck on a specific task or can’t find a way to execute a particular job, contact our support team via LiveChat or [email protected] – we’re here to help 24/7.