Mailing Creation¶
What Are The Options For Composing My Mailing?¶
Subject¶
Enter the subject line for your mailing. A compelling subject line can significantly increase your action rates.
The lower text box is for preview text. Preview text is the text that most email clients will display after the subject. In Gmail, for example, preview text is displayed after the subject with a dash between subject and preview text. Adding preview text is completely optional. If you don't add any, email clients will just pull it from the first text in your mailing's content.
For preview text to work, your email wrapper must support it.
You can easily run a test to see which of two or more subject line and preview text combinations performs better with your list and send the winner to everyone who didn't receive the test.
To run a test, just enter two or more subject lines. Click the plus sign (+) to add more subject line fields. Read more about Subject line testing. When you add another subject, the preview text from the previous subject line is copied. You can edit it or just leave it and use the same preview text for both.
As a shortcut for bulk creation of subject lines, you can also copy multiple subject lines from a document (with one subject line per line) and then paste it into a mailing subject field, which will then create additional subject fields to hold them all.
Notes¶
Notes are not displayed to recipients. They show on Mailing lists on the Mailings tab and the Browse All results screen. Use for differentiating between multiple mailings with the same subject line and for other internal purposes.
Email Wrapper¶
Email wrappers define the header and footer appearance and content for your mailings. You can also use them to create mailing templates to customize your mailing Compose screen.
The default wrapper doesn't include any appearance settings, but it does include a link to your default unsubscribe page. You can link to a different one, but you must link to one of your unsubscribe pages.
If you do not select an email wrapper for your mailing, then the mailing will be sent with a bare wrapper that has no appearance settings and a link to your default unsubscribe page.
You can create as many wrappers as you'd like. We've also provided some built-in examples of wrappers.
Click the Email Wrappers link on the Mailings Tab, to see a list of all your current wrappers, ordered alphabetically after the default wrappers (remember you may have a default for each Language).
Read more about creating new email wrappers.
From Line¶
Select an email address to appear in the From Line of your Mailing. You can also click the Custom From line link to enter an email address for one-time use.
From lines should follow this format: "Tanya Africa, ActionKit.com" <tanya@actionkit.com>. The name section should be quoted.
You can also use snippets in your standard and custom from lines to generate dynamic from lines that vary depending on the recipient for mailings, event emails, and transactional emails. These could be merge snippets, custom user and action fields, or any other data that is able to be evaluated as a snippet in your from line.
The final from line at send still needs to follow the same format as from lines without snippets; from lines that do not pass validation will kill the mailing and you will receive a notification that your proof or mailing has died.
Warning
You almost always want your main ActionKit domain on every mailing's From line. ISPs' spam filters treat new and unknown domains harshly, so splitting your mail traffic between domains has deliverability risks. Changing From domains has limited branding value anyway: the From name and subject are usually shown more prominently. We suggest changing From lines' name and, if you want, the email username:
- "Tanya Africa, ActionKit.com" <tanya@actionkit.com>
- "Tanya Africa, My Separately Branded Campaign" <separate.campaign@actionkit.com>
But we advise against per-campaign From domains like this:
- "Tanya Africa, My Separately Branded Campaign" <tanya@separate-campaign.com>
So, by default, if you try to change the From domain, we'll replace it with your primary domain on the From line, and use your alternate domain in a Reply-To header instead. When we do this, you'll see a note under the From line field saying so.
If, despite the risks, you definitely want to use other From domains, contact us via support. We'll need to change your instance configuration, and you'll need to do some DNS setup for the new domain.
From the Mailings Tab, click From Lines in the sidebar on the right under Content to see your existing From Lines. From this screen you can add a new from line, edit or disable (by hiding) an existing from line, or re-enable (by showing) hidden from lines.
Reply To¶
Enter an email address here if you want your recipients' replies to go to an email address other than the From Line for this mailing.
Merge File¶
Use Merge Files to insert user-specific information in your mailing from a CSV or TSV that you upload. For example, you may want to use highly localized goals based on users' cities: "We need 5 more volunteers in Oklahoma City today!", or to show users the best paper for an LTE based on their zip code.
The first column of the merge file is the key used to match targeted users to a row in the file. This is usually a geographic designation (like country, state or zip), but you can also match on the user source or unique identifier (user_id or email).
The other columns are the value or values you want to insert. Once you've selected a merge file on the Compose screen, you'll see a snippet for each column header if you click Snippets then Merge File in the Body section.
The Merge File Snippets use the prefix "merge" followed by the name of the column: {{ merge.column-name }}
. As an example, if you uploaded the following merge file, the available snippets on the Compose screen are {{ merge.zip }}
and {{ merge.paper }}
.
If you upload a file with the columns "zip" and "paper":
zip, paper
10014, New York Post
19130, Philadelphia Inquirer
94965, Marin County Chronicle
60632, Chicago Tribune
You can click to insert the {{ merge.paper }} Snippet in the mailing, and the paper that matches the user's zip code will be included. The Merge File Snippets include requires_value so your mailing doesn't display a blank if a targeted recipient's zip code isn't in the file. That user is skipped. Read more under failed deliveries.
Alternatively, you can remove requires_value and use a conditional block ( {% if merge.paper %}
... {% endif %}
) or a default ( {{ merge.paper|default:"your local paper" }}
).
See Managing Merge Files for the full list of options for the first column and for details on creating and updating merge files.
Note that merge files will be deleted 30 days after last use. This applies to merge files that were last used in a mailing that was sent 30 days ago, or in a draft that was last updated 30 days ago. If a merge file is not connected to a mailing it will be deleted 30 days after upload.
Merge files require Amazon S3 to be configured.
Merge Query¶
Merge queries work in a similar way to merge files, but instead of uploading the data to add to your mailing, you write a query to pull data from the database and the results are joined to the users targeted by your mailing. This is useful for grabbing data that exists in the database but is not automatically put into the mailing context, like extended legislator and event data, or custom action field values previously submitted by users.
The first column of the merge query is the key used to match targeted users to the query results. This can be a geographic designation (like country, state or zip), or a user source or unique identifier (user_id or email), but must only have one row per key.
The other columns in the query results are the value or values you want to insert. Once you've selected a merge query on the Compose screen, you'll see a snippet for each column name if you click Snippets then Merge Query in the Body section.
The Merge Query Snippets use the prefix "query" followed by the name of the column: {{ query.column_name }}
. As an example, if you write the following merge query, the available snippets on the Compose screen are {{ query.id }}
and {{ query.favorite_color }}
.
SELECT ca.user_id AS id, caf.value AS favorite_color
FROM core_action ca
JOIN core_actionfield caf ON (ca.id = caf.parent_id)
WHERE ca.page_id = {{ page_id }}
AND caf.name = 'favorite_color';
You can click to insert the {{ query.favorite_color }}
Snippet in the mailing, and the current recipient's value for that custom field from the specified page will be included. The Merge Query Snippets include requires_value so your mailing doesn't display a blank if a targeted recipient doesn't have a value returned by the query. That user is skipped. Read more under failed deliveries.
Alternatively, you can remove requires_value and use a conditional block ( {% if query.favorite_color %}
... {% endif %}
) or a default ( {{ query.favorite_color|default:"ultraviolet" }}
).
Merge Queries are just Query Reports with a few specific requirements:
- They must be tagged
merge
.- They must declare a name for every column using the
AS
SQL alias keyword. This is true even when the natural name of the column would be the name you want, e.g.SELECT core_user.id AS id
- The first column returned by the query must be one that can be matched to users.
- The merge query cannot contain a UNION.
You can use any of the following fields for the column users are matched on:
id
(core_user.id
oruser_id
in other tables likecore_action
)city
state
(the 2-letter abbreviation, e.g. "FL")city, state
(special case where we'll match on two columns because some city names are not unique (e.g. Springfield); if city and state are the first two columns in your merge query we'll automatically use both to make sure we get the correct value for each user)region
postal
zip
country
source
us_district
us_state_senate
us_state_district
us_county, state
(same behavior ascity, state
)loc_code
country_code
region_code
(You can also match on prefix
, first_name
, middle_name
, last_name
, suffix
, address1
, address2
although they seem much less useful!)
If you want to write your query using the query builder, be sure to click the As
button for each of your display fields, so that you can specify column names.
Once you've created a merge query, it will be listed in the dropdown for Merge Query on the Compose screen. Add a new one by clicking on the plus sign next to the dropdown. If you write a Merge Query with parameters, you will be able to enter values for the parameters when you select it on the Compose screen. In addition, any help text you write for parameters will be displayed above them when the Merge Query is selected. You can reuse a Merge Query on multiple mailings with different parameter values.
If you have a particularly slow merge query and you want to cache the results, you can use the Refresh setting on the query report just like you can for targeting queries. If you don't cache the results, they will be refreshed when the mailing is sent, or when the mailing set is rebuilt if you select the option on the Target screen to use the merge query for targeting.
Body¶
WYSIWYG¶
Most everywhere that you can enter and edit text (e.g. page content text boxes, mailing body), we've provided a basic WYSIWYG editor (TinyMCE) and a syntax coloring editor (CodeMirror) as well as the standard browser text area.
- Select Visual to use the WYSIWYG editor and view the rendered content without writing your own HTML. The toolbar has buttons you can use for standard functions and formatting. Just hover over the tool to see the name. For example, you can click to indent a paragraph or to insert an image. The show/hide toolbars button opens a second bar with additional formatting options.
- Select Code in the toolbar to have color-coding and line numbers for easier editing of the code. Different elements, like Javascript or CSS, are given different tinted backgrounds or text colors.
- Select Plain to remove all highlighting.
Note
The visual editor, like other WYSIWYG editors, may at times add more than you expect to the HTML, like extra <p>
tags, and at other times, strip out things, like styling. You may want to avoid the visual editor when updating code-heavy items such as mailing wrappers and templatesets, and limit the use of the visual editor to areas that are more content-heavy, like page text and mailing body content.
Spell Check¶
We've made it possible for you to enable your browser's native spell checking when using the WYSIWYG visual editor, at least for most major browsers. The keyboard shortcut, menubar command, or context menu option required to enable spell checking is different in each browser, but typically you can right-click (or control-click, or two-finger-click) on an editor panel to reveal the 'Spelling' or 'Spelling and Grammar' commands for it. Firefox users may have to begin by selecting 'Install Dictionary' to enable spellchecking the first time, if they have not already done so. This enables 'check spelling as you type' functionality in Mac Safari, Chrome and Firefox as well as possibly Windows for Chrome, Firefox and IE 10+.
Snippets¶
Snippets are click-to-insert template tags used to display information specific to each user within the text on your Pages and in Mailings.
For example, if you wish to identify the user by name, you would expand the User header under Snippets and select First name. The following Snippet of code will be inserted into your HTML:
{{ user.first_name|default:"Friend" }}
On the backend, composing and targeting your mailing are separate. It's particularly important to keep this in mind when using snippets. There are some safeguards built in to help you avoid sending a mailing to a particular user with a blank value for a snippet:
Default: Users who don't have a value for the field will see the default value defined for the specific Snippet. For example, if you insert First name, a user will see the default, 'Friend', if the first name field is blank in their user record.
You can change the default value by typing over it when you insert it, but not universally for the Snippet.
Requires value: Some snippets don't have a default and should only be used if the user has a value for the snippet. For example, the "highest previous" snippet only works for donors.
If your targeting includes users who have never donated, ActionKit will skip them, rather than showing a blank for the Snippet. You can see information about any users who are skipped in the Mailing report.
It's better to select the right targets (in this case, for example, by limiting to donors) than to rely on this safeguard because building the failed mailing list adds to your total send time.
You can delete "requires value" if you want to send the Mailing to users whether or not they have a value for the field. In these cases you may want to add a Default. For example, you could change the snippet below for Sen./Rep. Smith:
{% requires_value targets.title_last %}{{ targets.title_last }}to:
{{ targets.title_last|default:"Your Senator" }}if you are linking to a page that targets Senators.
In any case, if you customize your snippets we suggest viewing a larger sample of proofs to help avoid nasty surprises.
Some Snippets can only be used if ActionKit knows what page to use to determine the value. Select the appropriate page in the Landing Page dropdown.
As an example, the Snippet for Suggested Ask requires that you select a donation page, which will be used to look up the Suggested Ask formula.
The dropdown is not a complete list of all your pages. Only those with information that might be needed for a mailing are displayed (e.g. no signup pages are included).
View the snippets and the code they insert for Mailings.
Links¶
You can include multiple links in your Mailing, just type in the URL.
For tracking purposes, ActionKit appends some information to links. A link to a petition page with the name "protect polar bears" will look something like http://docs.actionkit.com/sign/protectpolarbears/?akid=1679.1.UB-drT&t=2 to your users.
The information appended after the ? is for:
- User Tracking (
akid=1679.1.UB-drT
above) - ActionKit adds a hash, an identifier including the mailing and the user's AKID. The hash is how ActionKit knows what information to show the user when he or she lands on your ActionKit page. The hash consists of[optional mailing id].[user_id].[hash]
. The user_id is unique to each user and doesn't change over time. A new hash is generated for each new mailing sent to each user.- Link Tracking ("t=2" above) - ActionKit assigns a number to each link. You can see which link the user clicked on in the Mailing Report. The user_id, mailing_id, url and link_number are all saved in core_click .
The tracking information is passed to the site if your link is to your main domain or to a domain you have registered.
Normally you want this all appended because that's how we track your click rates and how a page can recognize a user. If your page works through the API be sure to capture this information if you want the standard mailing tracking to work.
Use the Snippets in the links section if you want to turn off user recognition or stop us from rewriting external links.
Note
If you accidentally copy and paste a link from a proof into your mailing, you'll see an error message. ActionKit looks for any links that include "ak_proof=1". A proof link breaks our standard tracking.
All links that don't point to pages served by your ActionKit instance are redirected for tracking opens and clicks (e.g. a link to http://www.actionkit.com will look something like: http://docs.actionkit.com/go/95?t=4&akid=4074.1.RZ2UwQ). Redirected links always include "go".
If you'd like ActionKit to forward the AKID to the URL you're linking to in an external domain you need to register the domain. This is important if you are hosting a page externally and you want the page to recognize your user.
We don't redirect links to pages served by your ActionKit instance because we're able to track clicks to those pages with JavaScript instead, and not redirecting makes your page load a tiny bit faster. If you encounter problems with the click tracking on pages hosted by ActionKit, you can tell ActionKit to redirect all your links on the CONFIG screen.
In some cases, using template tags to generate your links can prevent them from being redirected, which also prevents click tracking if the page being linked to is not hosted by ActionKit. Specifically, your links will not be redirected if you use template logic tags, e.g. {% if x %}
, in the URL's domain or path. You can include those tags in the query string though, and you can include {{ foo }}
and {% include_tmpl foo %}
anywhere in the URL.
Here are some examples of using tags that ActionKit can track:
https://example.com/{{ custom_fields.page_slug }}/
https://{{ page_domain|default:"example.com" }}/path/
https://{% include_tmpl custom_fields.domain %}/path/
https://example.com/path/?page_id={{ page_id }}
https://example.com/path/?hpc={% if hpc < 50 %}50{% else %}100{% endif %}
And examples of using tags that ActionKit can't track:
https://example.com/{% if hpc < 50 %}50{% else %}100{% endif %}/
https://{% if custom_fields.host %}{{ custom_fields.host }}{% else %}example.com{% endif %}/
ActionKit also can't track clicks on a link where the URL is defined entirely inside a template tag:
{% with "https://example.com/" as url %} {{ url }} {% endwith %}
From the Short Links screen, for links that are redirected, you can make certain changes to the link (like making it more readable) before you include it in your mailing or correct a bad link that you already sent out. You can also create your own short links (for example, to shorten a link to one of your ActionKit pages) for links that won't be redirected by default. Note that if your links contain template tags, e.g. {{ user.first_name }}
, these are evaluated at the time the mailing is generated and can't be changed by editing the link later.
Plain Text¶
ActionKit will automatically generate a text version of your email. Both versions are sent to each user; the user's email client displays the text version if HTML is unavailable. If you prefer you can provide your own text version here by clicking Edit Plain Text Version.
Landing Page¶
Certain snippets require you to select the page that defines information included in the snippet. Snippets related to an e-delivery or targets for call, whipcount, letter and petition pages all require a source page, as do donation snippets. For more information, see:
Web Viewable¶
Your mailing can include links to "view this mailing as a web page". To enable this:
- Check the box.
- Include a link to http://docs.actionkit.com/mailings/view/{{mailing_id}} with a note that users can click to view their email as a web page.
When combined with the AKID that is added in the mailing process, this link will re-create the email message for the specific user. For example, http://docs.actionkit.com/mailings/view/123?akid=123.5678.UB-drT generates a view of Mailing 123 for user 5678.
If the AKID doesn't include an authentic hash generated by ActionKit (e.g., if the user wasn't sent the mailing), we'll display an anonymized version using the city, state and postal code for the first recipient of the Mailing. No other user data, like name, is displayed. This prevents third parties from arbitrarily requesting a view of any user's mailing.
You can use the anonymized version yourself with a link to http://docs.actionkit.com/mailings/view/123.
Some mailings cannot be viewed anonymously, because they include {% require_value ... %} tags which look for values an anonymous user lacks. For example, donation snippets which require recent donations will always fail for the anonymous user because it hasn't placed any orders.
Note
Anonymous web views of your mailing are recorded in the core_open
table with user_id 0.
If you want to enable web viewing but be sure that a Mailing isn't visible without a matching AKID link, you can add {% require_value user.id %} in your Mailing; all real users have an ID, so this will only fail for anonymous viewers. If any require_value
test fails, we display the message "we couldn't generate a view of this mailing."
Mailing views are formatted to look like the contents of the message in an email client. The message uses the Email Wrapper, not a Page templateset wrapper.
Mailing views are re-created based on the current information from the database, and therefore may not precisely match the version of the Mailing that was actually emailed to a user. For example, if a user moves to another state after a Mailing is sent, and then clicks the view-as-web-page link, they will see a new version of the Mailing that might include different legislative targets for their new address. Similarly, if you change the Email Wrapper after sending a Mailing, users who later click the view-as-web-page link will see the new wrapper rather than the version that was sent to them.
If a web-viewable mailing used a mergequery for targeting, we save data from mergequeries that aren’t cached for one week. During that week, web views are available. After that the user will not be able to view the mailer, and instead will get a generic mailing view error message.
Note
This option is not available for signature deliveries to legislative targets.
Tags¶
Tags are words or phrases you can associate with a mailing. The tag list is the same for pages and mailings, but unlike with pages, when you associate a tag with a mailing no users are associated with the tag, whether or not they receive the mailing.
Tags are used to categorize your mailings. Tags are displayed on the Mailings Tab and the Browse all listing, and you can filter by Tag. For example, you can quickly view the list of all the Mailings you have created for a particular campaign.You could also write a custom report analyzing mailing performance by tag.
To edit, add, or hide a tag, see Working With Tags.
Is Model¶
Model mailings are drafts that you've designated as templates to be copied as the basis for other mailings. Model mailings can not be sent.
You may want to create different models for particular kinds of mailings to save time and help enforce business rules. For example, if you have a C3 and a C4, you might have a model fundraising appeal for each where you've selected the proper from line and wrapper and limited the targeting to the correct list. Later, you can copy the appropriate model to create a a draft that shares those common elements, edit it as needed, and send it normally.
To designate a mailing as a model simply click the Is Model checkbox.
Note
Only staff users with the Mailings - Edit plus Model Mailings permission and superusers can create and edit model mailings. The checkbox to designate a mailing as a model will not show up for other users.
Custom Mailing Field¶
As with custom page fields, you can use these fields to insert a section of content or code in your Mailing or Email wrapper, or to create a mailing template.
After you've created the custom Mailing Field, add the field to the body of your Mailing using this syntax: {{ custom_fields.FIELD_NAME }}
. Or, if your custom Mailing Field contains template tags or filters that need to be interpreted, then use this syntax instead: {% include_tmpl custom_fields.FIELD_NAME %}
.
Then in the custom field row toward the bottom of the screen, select the field name on the left and enter the value on the right.
Proofs¶
Then use the buttons at the bottom to continue on to recipient selection or to generate one or more proofs (see Send Proofs).
How Do I Target My Mailing?¶
Includes and Excludes¶
Make selections in this section to build your target set.
Target Sets¶
ActionKit finds all the users that match your selections and who are subscribed to one of your mailing lists, then saves that set of users. Building your target set when you save your mailing makes complicated targeting and proof generation faster.
If you change the criteria, ActionKit will rebuild the set. Or, you can force a rebuild of the mailing set at any time from the Proof and Send screen.
After 30 days, target sets that have been saved to your database will be deleted unless the Mailing was stopped or died. The ID of every user who was sent a Mailing is saved to the core_usermailing table which is never deleted so you won't lose mail history.
Logic¶
Below we describe the logic used to combine your choices and describe the categories available.
Your selections within and between categories are joined as follows:
Criteria within a given category (e.g. "States" or "Mailings") are combined using "OR." "OR" makes your target set larger.
Example: If you enter "NY, RI" under States your set is everyone in both states. This is the same for actions, lists, etc.
(The rules for the Custom User Field and Custom Action Field categories are a little bit more complex. See the full explanation on those below.)
Categories under Includes are combined using "AND". "AND" makes your target set smaller.
Example: If you enter "NY" under the "States" category, then click Add Criteria To This Set and select "Has Donated" under the "Donors" category your target set will include only people from NY who have donated.
All your selections in one green section (which may include multiple categories like States and Donors in the example above) are part of one inclusion set.
You can create additional inclusion sets and join them using "OR" by selecting Also Include Another Set Of Users.
Example: Continuing with our example, where you're targeting NY donors, if you click to "Also Include Another Set of Users", select "Add Criteria" and enter "CA" under "States", your set will target NY donors as well as everyone in CA.
Alternatively, if you select "NY" under "States", include another set and select "Has Donated" your target set will include anyone who has donated, regardless of where they live, and anyone who lives in NY, regardless of whether they've donated.
Categories under Excludes are combined using "OR". So if you exclude donors and NY, you won't have any of either in the result set.
Raw SQL is handled by building a temporary table of people matching the criteria and then using "AND" (for include) or "OR" (for exclude) to combine it with other criteria.
Special criteria are joined to the set of users defined by the includes and excludes using "AND". So, if you're targeting donors from NY and you check the box to target constituents of your landing page's advocacy targets, only donors in NY who live in the relevant districts will be included in your target group.
Selections¶
Click on either Add Criteria or Exclude Groups to see the options described below. Many of the categories have built in tool tips that will display when you hover over the field's label.
Actions
Actions - Start typing the page id, name, title or tag to find all users who successfully completed an action on the matching page. Failed actions (like rejected donations) don't count. The dropdown includes the last 250 pages, plus any page that's been used in Mailing targeting in the last 14 days.
Custom Action Fields - You can select uers based on their custom action fields. Click in the box to select a custom action field, and optionally a page and specific values to match.
If you don't choose a page, you can choose custom action fields from any page to match. If you do choose a page, the list of fields will update to reflect the fields in actions from that page.
You can enter a single value to match or multiple values separated by commas, semi-colons, or returns. If you enter multiple values, they will be combined using "OR", e.g. a value of "cat, dog, ferret" would match users with any of those values in the selected field. Entering no value at all will match all users who have the field, regardless of the value they have in it. If you add multiple fields, they will be combined with "AND".
If you need to search for an exact string which contains a comma, semi-colons, or returns, you can place it in double quotes. For example –
Note that only double-quotes – not single-quotes – will work. "This works", but 'This will not.'
Donors - Selecting donors displays two options:
- Has Donated - Any user who ever donated either through an ActionKit donation page or according to imported user data. The user's total donations must be more than $0 (i.e., a user who has only ordered a free product will not be included).
- Monthly Donors - This box provides several selections to help you manage recurring donors, including: any user who was ever a monthly donor, only those with a current recurring commitment, those whose cards have recently or will soon expire, or those who canceled in the last week.
Event Campaigns - Selecting event campaigns displays the following targeting options:
- Near Event Campaigns and Campaign Radius - These two must be used together with each other, and with a snippet described in the guide to attendee recruitment for events.
- Same State Only - Limits users who are within the campaign radius to only those in the same state. Useful if events target state officials like governors or U.S. Senators. Use the special
user.state as state
variation of the snippet described in Attendee Recruitment Emails. - Same District Only - Limits users who are within the campaign radius to only those in the same U.S. Congressional district. Useful for events that target U.S. Representatives. Use the special
user.location.us_district as us_district
variation of the snippet described in Attendee Recruitment Emails. - Date Range - Optionally specify a starting and/or ending date to be used when searching for events. You may use a specific date, such as "2020-11-03", or a number of days from the present, such as "7" to represent one week. Leave these fields empty to match all events.
- Event Fields - Optionally filter events based on custom fields saved when the event was created. To match any one of several values, separate them with a comma, semicolon, or line break. If you enter multiple values, they will be combined using "OR", e.g. a value of "march, rally, phonebank" would match events with any of those values in the selected field. If you add multiple fields, they will be combined with "AND".
Languages - Any user with the language you specify here in their core_user record will be selected. Read more about using languages.
Lists - If you want to limit to users on a particular mailing list, select your list here.
Note
Unless you select a list, ActionKit will assume that your criteria apply to all users on any list. ActionKit displays a warning if no list is selected here; you can ignore it if you intend to target all mailable members regardless of list.
- Mailings - Selecting mailings displays two targeting options:
- Mailings - Select users based on whether they are on the recipient list for a sent mailing or a draft. You cannot use a draft that was last updated more than 60 days ago for targeting. The mailings box includes a dropdown that displays the last 60 days of sent mailings. Start typing the subject, id or tag to select mailings sent more than 60 days ago.
- Mirror Sent Mailings' Excludes - Ensure that if a sent Mailing excluded your draft, your draft will also exclude the sent Mailing. That's a best practice for avoiding Mailing overlap, and usually, you should leave the box checked. You can see which mailings have been excluded in the Excludes section of the Proof and Send screen. If there's a special situation where you want to double-hit those mailings' targets, uncheck the box. Excludes are only added when you edit your query or rebuild your Mailing set; it's normal if mailings don't show up in your targeting as soon as they're sent.
- Recurring Mailing Series - Select users who have received a recurring mailing series, optionally choosing a specific series. You can also choose a number of days prior to check for sends or let it match all sends for the series.
- Scorepool - Select users based on a range of Scorepool scores, optionally including users who have not been scored yet.
- Tags - Any user who completed an action on a page with the selected tag, see Tags.
- User Groups - Similar to Tags, User Groups can be used to target mailings. While similar, there are several differences between Tags and User Groups that should be considered when choosing which to use for targetting.
Location
- City/Postcode Radius - Selecting city/postcode radius exposes two targeting options:
- Points - Use any 5-digit zip code or a postal code followed by the country name. You can also enter a city name (followed by the country if it's not a US city) if you also enter a point radius in the following box. ActionKit targets from a point in the middle of the city and needs to know how far out you want to go from that point. Some examples: Cities (Atlanta, GA; Paris, France), US ZIPs, or non-US postcodes with country (e.g., T2W 6G5, Canada). Separate multiple items with ; or linebreaks.
- Point Radius - The radius finds all users w/in x miles or kilometers of the point or points entered in the points box. (You set X by selecting the mileage from the dropdown). Users who are in a zip that's on the edge of the zip radius are included whether or not their address is within the radius (some zips will have addresses within and beyond the radius). For cities, search radius is from city center (not borders).
- Congressional Districts - Use the format CA_04 for California federal house district 4. (New districts for 2024 redistricting are also available for targeting with custom SQL.)
- Countries - Any user with the designated country name in their user record.
- State House/Senate - Selecting state house/senate displays two targeting options:
- State Senate Districts - Use the format CA_004 for California state senate district 4.
- State House Districts - Use the format CA_004 for California state house district 4.
- States or Regions - For states, use two-letter state abbreviations. State and region are mutually exclusive, so if you want to target by region instead click the link below the box and enter the region. Regions are targeted based on the user's core_location row and NOT the value in core_user.region. Accepted syntax is: "England, United Kingdom; Scotland, United Kingdom". You can also use 2-letter country codes "Ontario, CA; Quebec, CA" . GB, not UK is the country code for the United Kingdom.
- Target Groups - Constituents of the selected legislative target group. Define new legislative target groups from the Pages Tab.
- Boundaries - Allows for targeting of users within geographic regions that can be customized.
- Boundary Groups - Allows for targeting of multiple Boundaries.
- U.S. Counties - Any user who lives in the designated county or counties based on their zip code. Separate counties using semi-colons, new lines, or commas. Or use the format
county, state
(ex: "Springfield, VA") if there are counties with the same name in multiple states. - Divisions - Allows for the targeting of users within international geographic areas (e.g., province, riding, district, etc.).
Custom
Query Library - Click in the box to select a query from your library. Select the query from the drop down list and click Add Query. To add a query to the library, click Write a new query. To edit an existing query, go to the reports tab and search for the report by name. For more information, see Query library reports.
Raw Queries - Enter a SQL statement for targeting that you can't perform with options above. Your select statement must return the user_id and only the
user_id
. The mailer will automatically exclude any users who aren't subscribed, so you don't need to include this in your query. You can include more than one query by separating them with a semi-colon. For more information, see Creating a query report .Users - You can include or exclude individual users by User ID. You can find an individual's User ID by searching for them on the Users Tab, see About end user accounts.
Custom User Fields - You can select users based on their custom user fields. Click in the box to select a custom user field, and optionally enter values to match. You can enter a single value or multiple values separated by commas, semi-colons, or returns. If you enter multiple values, they will be combined using "OR", e.g. a value of "cat, dog, ferret" would match users with any of those values in the selected field. Entering no value at all will match all users who have the field, regardless of the value they have in it. If you add multiple fields, they will be combined with "AND".
If you need to search for an exact string which contains a comma, semi-colons, or returns, you can place it in double quotes. For example –
Note that only double-quotes – not single-quotes – will work. "This works", but 'This will not.'
Special Criteria¶
There are a few options that are not available as Excludes. These are shown in a "Special Criteria" section, but only when they're available based on choices you made on the Compose screen.
- Landing Page Targets - You can select this checkbox if you have specified a Landing Page. Selecting this option includes any user in the legislative district(s) targeted by the page selected from the Landing Page dropdown. This box is selected by default when you select a Call, Letter, Petition or Whipcount page under Landing Page on the Compose screen.
- Merge File - If this Mailing uses merge files, you'll see a checkbox to Only include users matching the values in the id column from the ------ mergefile (selected on the Compose screen).
- Merge Query - If this Mailing uses a merge query, you'll see a checkbox to Only include users matching the values in the X column from this mergequery (selected on the Compose screen).
- E-Delivery - This checkbox is only available if you're doing an e-delivery and you've completed the required set up. If you can't check the box, make sure you've created a delivery job for your page from the pages tab and selected the same page when you specified a Landing Page. Read more about e-delivery.
Auto Excludes¶
If you've enabled auto excludes, you'll see a checkbox below the Add and Exclude sections. Check the box to include this mailing in your priority ordering for mailings to be sent on the day you select.
Limits And Ordering¶
Limit - Used for testing. Enter a number here to limit the number of users to receive this Mailing. Select a number that's lower than number of users who match your targeting selections.
For example, if you have 100,000 users in California but you only want to send this email to 10,000 of them, enter CA under State and enter 10,000 in the limit box. Read more about testing at testing your mailings.
If you set a limit, random will be pre-selected by default under Order by.
- User ID - By default ActionKit will send to users in order by ID, lowest to highest.
- Zip (east-to-west): Zip sends to users in order by zip from east to west.
- Shuffle randomly: Sends in random order. Generally used in combination with limit above to send an email to a random sample of targeted recipients for testing your mailings.
- Engagement Level: Sends to most engaged users first, then less-engaged users, and users with unknown engagement last. Uses ScorePool to determine engagement level.
If you don't include a sort order, ActionKit will automatically order the names by id, which generally means oldest to newest.
Limits by Mailbox Provider - This allows you to set a limit on the number of users you send to from a mailbox provider, e.g. Gmail or Microsoft/Hotmail. This can be used to cap the number of emails you send to a provider to keep your volume consistent. (But keep in mind, this is a limit for the current mailing, not for a time period.) It can also be useful if you need to restart your warmup process for a particular provider while keeping the rest of your mail as is. The limits are applied to the sorted list of users, so if you sort by engagement level and limit by mailbox provider, you'll send to the most engaged users at that provider first.
This will never result in more users than the total limit you set for the mailing. Also, it is a limit, not a minimum, so it doesn't guarantee you will find that many users from that provider in your target set.
Max emails/sec - Usually you'll want us to send your emails as fast as we can and you won't use this option. However, there may be times when you'd like the emails to trickle out. In that case, you'd enter a number here. The low end is 2 mails/second and the high end is 300/second.
The classic use for this feature is to send call alerts slowly enough to avoid lots of your users getting a busy signal. It may also be useful if you are sending users to a partner with limited network or server resources.
If your mailing is a timed send (sending to users in their local time zone or scheduled), the Max emails/sec feature will be used to automatically distribute send times to obey the limit you set.
A/B Testing¶
Check the box to make this mailing part of a test group. Pick an existing test group or create a new one.
Note
This is only for test groups comparing separate mailings. You don't need to check this to use A/B content tests within a single mailing.
For most mailing tests, the newer A/B Tests for Mailings will be easier to use, but test groups can still be useful for comparing mailings with very different contents.
Test groups allow you to group two or more mailings to make head-to-head testing easier and more foolproof. Using a group helps protect against common testing mistakes by making sure the mailings' targeting criteria and rough size match, that the groups don't overlap, and that they're launched at the same time. They also help simplify the process by letting you review and launch the whole set of mailings from one screen, and use a few clicks to compare the mailings with statistical details and launch the winning mailing.
You can still run manual tests, using the Compare Mailings report to compare performance. In some cases this is the better approach. Test groups only make sense when mailings' targeting, size, and launch time all match: they're not designed for testing three petitions to three different list segments, or testing sending the same message on different days of the week. Groups also aren't available for petition delivery mailings or recurring mailings.
What Are The Proof And Send Options?¶
Preview Your Mailing¶
Click Preview, under Body within the Compose section, to see the Mailing and wrapper as it will appear to users. This can take up to 30 seconds to load. While it's loading, the area will be blank. Click Preview again to switch back to viewing the Content table.
If you have conditional content in your Mailing, like user.first_name
, ActionKit will display the name of a recipient based on the targeting selections you've made with two exceptions.
- Since this is just for preview purposes, ActionKit may display a user who is unsubscribed and who will not be sent the final Mailing.
- A test user (named 'test') will be displayed if a count has not been generated for your Mailing, or the count is regenerating due to targeting changes, see Force a rebuild of the Mailing set.
You can enter the ID or email address of a user to see how the mailing will look for that user. This works even when your targeting is rebuilding. Keep in mind that previews for a user who isn't targeted by the mailing may not work correctly with certain snippets.
You can also choose which A/B test variation you want to preview.
Review Targeting Data¶
The Targeting table contains the number of recipients, the limit, and sorting criteria based on your target selections on the Target screen. You can view the SQL generated by clicking View SQL. This can be a helpful resource for learning more SQL and more about the ActionKit data structure. You can also go back to the Select Recipient screen by clicking Edit.
Force A Rebuild Of The Mailing Set¶
The users matching your targeting criteria are saved as a target set. You can rebuild the set any time using the Rebuild Now link.
If you change your targeting criteria, the current mailing set will be cleared and a new build will be started automatically. Even if you haven't changed the targeting, it's a good idea to generate a new count periodically by clicking Rebuild Now. Otherwise you may miss users who didn't meet the criteria previously. For example, if you're targeting signers of a particular petition you have to rebuild the mailing set to include anyone who signed since your last rebuild.
You can see an estimate of the build time (based solely on the last rebuild) on the Target screen while it's building. The mailing set information will be refreshed and you will be sent an email with the new recipient count.
Send Proofs¶
You can send proofs to yourself, other staff members and/or other email addresses. Proofs are copies of the actual mailing that will be sent to end users that you can review for misspellings or broken links or other issues.
When you send proofs, ActionKit creates a random sample based on the recipient group created on the Target screen. This way you can view proofs of the mailing for different users. If you have not yet saved a target set, the users will be selected from the full set of all your mailable users.
You can also send proofs of the mailing that particular users will see using the see proofs for particular users link. Enter a list of user_ids or emails to receive proofs for those users. This allows you to view mailings as they will appear to users meeting specific criteria. For example, if you want to see how your suggested ask will appear to donors with a large average gift, you can enter the user_ids or emails of 5 users you know meet that criteria. You can do this whether or not the specified user is in the target set for the mailing. This approach can be used to view a proof for a recurring series for which nobody meets the criteria today. We still recommend viewing and testing random proofs as well because you may encounter a problem you aren't specifically looking for.
You can send proofs from either the Compose or the Proof and Send screen. In both cases, the process is very similar:
1 At the bottom of the page, select the number of proofs you want sent to each proof recipient from the dropdown list, 1, 5, or 20.
2 Select the proof recipients by clicking in the to: box and selecting the name from the dropdown list. Repeat to select multiple reviewers. Hold down the command key to keep the list open while you select. You can also enter an alternative email address if you are on the Proof and Send screen.
3 Click And Save if you are on the Compose screen or Proofs if you are on the Proof and Send screen. The proofs will be sent.
If your mailing uses A/B testing, you can choose which variation you'd like to get proofs for, or let ActionKit cycle through all of them.
You'll always want to review at least one proof for appearance, typos, broken links, etc. Review multiple proofs if your email includes snippets. Always send yourself a final proof after making any changes just in case you accidentally broke a link or introduced a spelling error.
Note
- ActionKit doesn't count opens or clicks in proofs.
- The subject line for the proof email starts [proof] so you know it's not a regular email. For mailings with A/B tests, the variation will also be indicated in the subject line.
- If you aren't getting proofs, be sure to check your spam folder. Proofs are particularly likely to trigger spam filters because they are addressed to someone other than you.
Warning
Don't submit on the page from a proof unless you intend to record an action. ActionKit will count a submittal from a proof as an action from the user the proof is directed to (and the user will receive any confirmation email you've set up for the page). The only exception is for petitions with one-click enabled. You can click on the link and confirm that you've linked to the right page without recording an action.
Send Or Schedule Your Mailing¶
You can:
- send now, by clicking Send,
- schedule by selecting schedule for later, or
- set the Mailing to send on a regular basis by selecting make recurring. Read about settings for Recurring mailings.
When you click the red button to Send (or Schedule or Start recurring Mailing), you will be asked to confirm that you really want to send (or schedule) the Mailing.
The option Prepare messages immediately, rate limit send (recommended) appears if your mailing has a rate limit, and it is checked by default. This option will generate the messages for your mailing immediately, but will queue them as timed sends according to the rate limit you set. This is the best option for most mailings, as it will ensure that your mailing goes out on time and that you will be alerted immediately if there are any errors that would prevent the mailing from being sent.
When your Mailing is sent, any staff user with the permission "Receive All Mailings" will be sent a copy of the final version with a subject beginning "[Final Mailing." Read more about staff permissions.
Scheduling A Mailing¶
To set a later send time for a Mailing, select the Schedule to send later checkbox and enter the Date and time for the delivery.
The time zone will be displayed after the delivery time. If this is not your desired time zone, click the Change Time Zone link in the page footer, select the proper zone from the dropdown list, and click Save.
You can cancel the send for an unsent Mailing by clicking Cancel in the Actions column of the Scheduled Mailings listing on the Mailing Tab, see Mailings dashboard.
Click Rebuild mailing set at send to force a rebuild of the Mailing set before sending. Mailings set to rebuild-at-send will rebuild an hour before their send time, so they're ready to send at their scheduled time. If your mailing has been rebuilt within an hour before send time, or is currently rebuilding, the automated rebuild is skipped. You can still make changes up until the scheduled send time.
Recurring mailings will rebuild at their actual send time, not an hour ahead, to avoid problems with recurring mailings set to send hourly.
Click Prepare messages as soon as I click Schedule with a Timed Send to generate the messages for your mailing immediately. They will be queued for delivery at the time you scheduled, using the same mechanism as `Timed Sends`_ described below.
The primary advantage of preparing your messages now is efficiency - your mailings won't have to wait to be built at the scheduled time, so they will go out on time more reliably. You will also find out immediately if your mailing has errors that would prevent it from being sent, rather than waiting until the scheduled send time to find out.
The downside of using Prepare messages as soon as I click Schedule with a Timed Send is that your messages won't include the latest data form your database. You wouldn't want to use this option for mailings that need very fresh data like event invites, for example.
Note
When using `Timed Sends`_, your targeting set only rebuilds when the targeting changes or a rebuild is requested by a staff member.
What kind of testing can I do?¶
Testing is smart! So we made it easier with built in head-to-head testing of subject lines, mailing contents, and full mailings. Testing is supported in the following ways:
- Subject Line Testing: Enter your subject lines, view a comparison report, then select the winner to send to everyone who didn't get the test.
- A/B Tests for Mailings: Perform head-to-head tests of mailing text, images, senders, etc.
- Test Groups: Compare different layouts or even totally different mailings.
- Manual Testing With Mod Filter: A more technical testing option for advanced implementations that can't be accomplished using the methods above.
What can we do to achieve the best deliverability?¶
Our most comprehensive guide on email deliverability and inbox placement is available in this training video:
While the above video is generally good advice, there is no definitive solution that will ensure all of your messages make it to users' inboxes and not their spam folders.
Some additional things to keep in mind include:
Always clearly indicate that signers will be subscribed to your mailing list. Every mailing must include a clear unsubscribe link. Purchased or bartered email lists may not be mailed to using ActionKit without our prior approval.
The biggest factor in determining whether a mailing gets flagged as spam is how your members interact with it. Filtering is almost all reputation-based now. The specific scoring systems that ISPs use for spam filtering are opaque. This makes sense; if spammers can learn what the filters are for a given ISP they can exploit their network. Broadly we know that higher open and click ratios help. Lower percentages of users bouncing or reporting you as spam help.
You can improve your rates and remove spam traps from your list by unsubscribing users who have not engaged with your mail stream for a long time. We've added tools to help you implement a list hygiene and re-engagement program.
We help manage your reputation, signing you up for feedback loops and allowlisting programs where possible. If you're getting reports of emails that are going to users' spam folders, report that to us through the support webform and attach the email so we can see the header. Sometimes we'll see something that you can change. Sometimes there's no clear reason and we'll follow up with the ISP. We can't take that step, however, until you've established some mailing history through ActionKit so we can get bounce rate/spam complaint numbers to the ISP.
Note that although we automatically sign you up for feedback loops (which are used to automatically unsubscribe users who mark your mailings as spam), Gmail does not have a participating feedback loop program. Because of this, if a Gmail user clicks "Report spam", Gmail will not report who clicked spam or how many users clicked Report spam.
You can see spam click rates by signing up for Google Postmaster, but this information isn't currently available to us for Gmail users.
Since spam complaints from Gmail addresses are not known, that means the spam complaint stats reported in ActionKit (and in any other system) are undercounts.
You can also test your emails to see if certain changes make a significant difference in your rates. Keyword filtering is mostly a thing of the past. But, if more users don't open your message or mark it as spam with particular wording, that may affect filter behavior. A long subject line will get truncated at an arbitrary length by most mail clients. That may have the same effect.
You can review current guidelines to learn about specific triggers and to get a sense of what hurts versus helps. But remember that these change regularly as spammers try new approaches and ISPs update their filters to catch them.
Gmail has some information about their rules here:
http://mail.google.com/support/bin/answer.py?hl=en&answer=81126