Release Email Archive: 2014


Hey ActionKitties! A couple big new features for our last release of the year. As usual, you'll see these changes in your instance tomorrow morning. Happy Holidays and best wishes for excellent year-end fundraising!

PayPal Integration (beta)

We're looking for beta testers for our new PayPal integration. Currently this is available for one-time donations in US dollars. Recurring donation and multi-currency support will be added in the new year.

Our PayPal implementation offers support for both traditional CC processing (like that provided by Braintree, and PayFlow Pro) as well as paying via PayPal accounts. When users pay via PayPal accounts they are redirected to the PayPal site and then back to ActionKit after they approve the payment.

To use either, you need to set up a PayPal account. We'll need your client_id and client_secret for the PayPal REST API. Then you'll need to make some changes to your donate template.

Paying via PayPal account is different from the other payment methods in ActionKit in that it does not require any user data to initiate a donation - only the amount must be selected. The user then logs into their paypal account, submits and is redirected back to the thank you page. The donation is attributed to the email entered on the donation page (if applicable), or to the user associated with the AKID (if the user comes from a mailing or with an AKID). Otherwise, we use the email address entered in PayPal and create a new user if needed.

You can find more about this at

If you're interested in beta-ing, please let us know!

A/B Testing in the Mailer

To directly test some mailings against each other to similar audiences, we've added test groups. Using a group helps protect from 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 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.

To start, click "Create A/B Test" on the Mailings dashboard. Choose a title, and click drafts you'd like to include or, if you'd like ActionKit to create blank drafts for you, enter how many you want.

When you edit the targeting of any draft in the group, it will change targeting for all of them. When you pick a user limit, note you're limiting how many users each mailing in the test can hit, not an overall limit for all mailings combined.

From the targeting screen, you can also make edits to the group, including things like changing which drafts are included or canceling a test entirely (unlinking individual drafts from each other).

After you've created your test and entered final content, click "Proof and Send Test Group" from any group member's Proof and Send screen (or click "Launch Test" in the drafts list). You'll see basic information on each draft and previews; if you see you need to make edits, click the title of any draft to go back to it. The system will also check for a few obvious problems like blank mailing bodies from placeholders. If everything's ready, click Send (or schedule, if applicable). Even if you set up an immediate send, the test drafts will show in the "Scheduled" section, sometimes for a few minutes.

After the test mailings have sent, click the "Test Results" link on the dashboard to see the Compare Mailings report comparing the drafts. Clicking a draft's subject in the report will load a copy of the winning mailing which excludes all of the test mailings and removes any limit on number of users.

Test groups make sense when mailings' targeting, size, and launch time all match: if you're testing three petitions to three different issue segments, or testing sending the same message on different days of the week, they're not the best fit. Groups also aren't available for petition delivery mailings or recurring mailings.

There's more information about how groups work at

Tags Available in the Mailing Context

There's a new content variable, 'mailing_tags'. You can use this to do things like include a tag in your mailing. Examples of use:

{% for tag in mailing_tags.keys %}

TAGGED {{ tag }}

{% endfor %}

{% if mailing_tags.neat %}


{% endif %}

{% if "spacey spacerson" in mailing_tags %}


{% endif %}

The last one is useful if your tags have spaces or punctuation in them.


  • We made it easier to see which survey question the drag-and-drop icon is associated with for survey pages.
  • We added a REST API resource for new user form fields.
  • We fixed a bug in the appearance of the default donation amount in the Original donate template, one in the new PATCH method, and one in copying letter pages with delivery options set up.


Hey ActionKitties! Just a few things this week.

Also, please note that ActionKit support will be closed Thursday and Friday next week for Thanksgiving. We'll respond to any support requests received on those days on Monday December 1st.

Minimum password strength for staff users

On the CONFIG screen, you'll see a new Password Requirements section, where you can set minimum password strength requirements for your staff. You can set a minimum length and require any of lowercase, uppercase, numeric and special characters.

Your requirements will apply to any new passwords created (for new and existing staff). Existing passwords will continue to work. If you want to enforce a new organizational requirement, you can either:

  • Ask us to invalidate all existing passwords. Everyone will need to follow the "Forgot Password" link when they next log in to reset their password. Or,
  • Reset all staff passwords individually from this screen:, replacing "2" with the id of each staff user. You can get a list of the ids of all active staff user accounts with this query: select id, email from auth_user where is_staff=1 and is_active=1.

We set everyone's configuration to require 8 characters and we recommend using more of the new options to improve your security.

Additional security options, like requiring dual authorization, are in the works.

PATCH method in the RESTful API

Most RESTful API resources now support the PATCH method for "detail" endpoints. You can now send PATCH requests for existing resources, modifying a subset of fields without changing the rest of the resource. We're looking forward to your feedback and bug reports on this new feature!

Here's a small example of updating a User's name using curl:

[aaron@local ~]$ curl -i -u user:password -X PATCH -H 'Content-type: application/json' -d '{ "first_name": "Patch", "last_name": "Patcherson" }' HTTP/1.1 202 ACCEPTED

"All" option added to the mailings tab

So you can still see a snapshot of all your mail activity on one screen. Thanks to Story of Stuff for requesting!


  • Either email or akid will work for the new donationpush API. And the docs have been updated.
  • We updated the database table and column schema definition used for tab auto-completion when you write your own SQL in a query report.


Hey ActionKitties! The features in this week's release (which you'll see tomorrow morning) will be very exciting to some groups (and probably boring to others). Next week you're likely (but no promises) to see some more general features like a way to require staff users to set stronger passwords and maybe even more a/b testing options in the mailer.

Seed List

A number of you have asked for a way to send all mailings above a certain size to a list of email addresses so you can use a deliverability monitoring service.

We've added a Mailer Seed List option to the CONFIG screen. You can enter or upload a list of email addresses and set a threshold for the mailing count above which the list should receive a copy of the mailing.

The messages are exactly like the "Receive all mailings" final proofs, but without the [Final mailing blah] in the subject since you want this to look like real mail. An arbitrary user's data is inserted if the mailing includes snippets. The links include the proof argument so clicks from these links aren't counted.

The addresses end up in the db as "never subscribed" users and do not show up in core_usermailing. Nor do these emails affect your mailings counts.

REST API and Donations

We've added a feature called Donation Push.

This API allows you to automate adding donations to ActionKit that have already been processed. A number of your have worked with ActBlue to develop specs for an improved integration with ActionKit. The Donation Push AP will make this development work easier for ActBlue and allows you to retain information you want. The documentation will be available in your instance tomorrow at:

As part of this, we made a couple more general changes:

  • Orders to a candidate can be made through a page without first associating the candidate to the page. The candidates must already exist in ActionKit, but they don't have to be associated with the DonationPage anymore before we'll process the donations.
  • You can set the donation date using the API. Sending "created_at" or "donation_date" with an authorized API request will set the dates of the Order and Action. "donation_date" will set the date for the Order. "created_at" will also set the date for the Action.

Manual Additions

There's a new FAQ and a section on the embedding page about custom thermometers.


Recurring Mailings: We renamed Recurring Mailing Schedule to Recurring Mailing Series and modified the text to hopefully make it clearer that each schedule can only be associated with one mailing. For example, if you're sending a campaign specific welcome mailing to every user who joined on a campaign page two days ago at 10 AM every morning, and you want to send a different welcome email to everyone else who joined two days ago at the same time, you need to create two Series with the exact same schedule settings.

President Obama target: We fixed a bug that created two President Obamas in most instances.

Cached Query Library Reports: We made some changes to speed these up for mailer targeting and viewing targeting SQL.


Hey ActionKitties! It's been a rough week. We've got a bunch of features in the works that we hope will make the fights ahead a bit easier.

First, you'll see a cleaner, simpler, more visually appealing ActionKit when you log in tomorrow morning. In addition to the changes below, this release includes some changes to help speed up mailer targeting (particularly with tags and "has donated") and some bug fixes.

Also, if you don't read the features notes, please skip to the end and read the Warning about setting user recognition to Always.

Admin UI Redesign

The redesign is a work in progress but all the top-level screens (Home, Pages, Etc.) are done. We’ll be updating all the other screens to match the new look over the coming weeks.

And the new design is responsive, so you can bring your work everywhere!

Some things have moved around but all of the functionality should still be there. For example, the options that were in the header or footer (password reset, CONFIG, etc.) can be reached by clicking on your user name in the header. If you have trouble finding something, or have comments on the new design, let us know.

Subject ID

A mailings subject is now available in the context for the mailing. There are two new variables you can use to access the subject and the subject id in a mailing. For example, in the mailing body you could have:

The subject of this mailing was "{{ subject_text }}" which is subject id {{ }}.

Manual Updates


Query Builder Improvements

These were released previously but weren’t included in any release notes:

  • Added display and filter options for user and action query builders: User > Home Address > City, State/Region. Also revised 'in list' matching for address filters to use semicolon for alternatives, so that you can match City, State is in list Sacramento, CA; New York, NY.
  • More options in query builder for User > Actions > Custom Action Field; can now limit to action fields from particular date ranges, on particular pages or on pages with particular tags.

Coming soon

As usual, we can’t promise a release date for any of these features, but current priorities that we hope to release before year-end include:

  • User form field selection: As previewed at ClientCon14, we're adding an interface to allow you to set the fields to display and to be required on a page-by-page basis, including custom user fields.
  • REST API improvements including some changes that will make it easier for ActBlue to improve their integration
  • A/B testing for mailings
  • Improved admin security
  • PayPal data integration

Warning about setting pages to Always Recognize User during page creation

We’re planning to deprecate this option for use on new pages in a release soon. In the meantime, I want to clarify how this setting works as the terminology is confusing.

If you select Always, that tells ActionKit to attribute every action that comes from a hashed token, like a mailing link, to the user associated with the token.

Let’s say you send a mailing to users asking them to take action on a petition page set to always recognize the user. User X follows the link in the mailing and submits. Then User X forwards the mailing to ten friends, two of whom follow the link and submit. All of the actions are attributed to User X and you don’t get any information for User X’s two friends. (Technically, there may only be one action recorded but that depends on whether page allows multiple responses or not.)

If you do have cases where you want user recognition to work this way, please let us know.

For your reference, here’s the relevant section from the manual, which gives you a bit more information about the other options for this setting.

Recognize users

Recognize user allows you to control what happens when a User arrives on an ActionKit page with a hashed token (?akid=xxx-yyy-zzzzzz), like from a mailing link.

The default option "once", will recognize a user until they submit the page and take action. This is a default because most of the time the first user who follows a link like this and submits on the page is the user associated with the AKID. Other users who follow the same link are generally friends who have received a message from the original user telling them about the action, so you don't want the page to recognize them -- both because the page would think the friends are still the original user and because you want to capture correct contact information for any friends.

You can change this to "Always" or "Never." You might use "Never" if you want to do something like make sure that everyone taking action on a page enters a correct phone number, whether or not you already have one in the file.

"Always" has fewer obvious uses, but we've included it in case there are times when you want everyone who follows a link to be counted as the user identified in the link.

A few page types do not include this option. Unsubscribe pages must always recognize the user in order to comply with our requirements for best practices for email delivery. Donation-related pages and event creation pages require the user to enter their information, even if the user is recognized, so we don't show these options for those page types either.


Hey ActionKitties! Here's what you'll see in your instance tomorrow morning:

Page speed features (BETA)

  • Context preloading: To beta-test this, go to Config and enable Pages -> Preload Context. When this is enabled, the "context"--the URL ActionKit uses to determine if a user should be recognized, to get Representative info on a call-Congress page, and so on--is loaded earlier in the page than it was previously.
  • Basic CloudFront support in media library: This is detailed in the manual; loading scripts and CSS from CloudFront can make a big difference in your page's perceived load speed.

Also, links from mailings to pages hosted by ActionKit once again won't use the /go/ redirector, after the feature was disabled temporarily, and there is a new section in the manual with more page-speed tips:

Opt-in option for Canada

Several of you have asked about Canada's new anti-spam legislation. We've made a change to help you comply, but you should consult an attorney to find out more about the law and decide on the best approach for your organization.

The new original template set has been changed so if your form includes a country drop down and the user selects Canada, a checkbox is displayed that the user can select if they'd like to be added to your list. The box is unchecked by default. Nothing has changed for other countries.

A few things to note:
  • You can find the new code to add to your existing templates sets in the country_select template.
  • There's a (details) link where we've noted that an unchecked consent box won't unsubscribe a current member.
  • If a Canadian user has noscript on, they can't subscribe even if they check the box.

If you're concerned that the confirmation email may be interpreted as a violation of the law for users who didn't opt-in, you can suppress sending a confirmation email by adding a new snippet -- skip_confirmation -- to your page as a hidden value, triggered for users from Canada.

Template set management

You can change the template set used on a page by including it in the URL. To do this you just append the desired set name to the URL like: ?template_set=Original

And a few minor changes and bug fixes

  • Built in reports now include all the subscription change types used in the core_subscriptionhistory table.
  • A recent change meant that survey downloads were showing NONE instead of a blank where the user did not respond to a question. From now on, the display is set by the program opening the CSV. In most cases these will show as blanks.
  • We fixed a problem in the layout for donation pages with products in the original template set.


Hey ActionKitties! We're looking forward to seeing many of you in Detroit next month. In the meantime, we've got a honking big release coming to your instance tomorrow morning. Here's what you'll see:

Mailings query builder

  • We changed the behavior of the "Performance" criteria so they act like criteria in the "Totals" section. Remember displays in the total category return aggregate statistics for all records that meet your filter choices and you can mix these displays with other choices to see statistics by group. For example, you can view open, click and action rates broken down by "from" line.
  • We also added a "Group by" section for Tags, so you can see the data in the totals section and the performance section grouped by tag.
  • We added cutoff points to the performance stats for 1, 2, 3, 4, and 12 hours in addition to the current 24 and 72-hour options. Use these to do things like compare click rates at 2 hours after send for mailings sent in the last week.

Subject picker

We simplified the subject picker on the individual mailing report. Now you click in the results table to pick a subject as the winner. The winning mailing will exclude the users who were actually sent the test mailing.

Recent actions snippets

  • Last month, we had a short period of downtime due to an unintentionally heavy use of recent_actions on a busy page. To prevent future downtime, we have made a few changes:

    • recent_actions will return at most 500 actions
    • recent actions will be cached for 2 seconds
    • {{ page.recent_actions.count }} has been replaced with {{ page.count_actions }}, which is also cached for 2 seconds

    We've reached out to clients we think will be affected by this change, but feel free to open a ticket if you would like more details.

  • Recent actions now works across multilingual campaigns with the snippet {{ page.multilingual_campaign.recent_actions }}. For example, you might use the following on a thank you page:

    <p> These folks have taken actions across our campaign recently: </p> {% for action in page.multilingual_campaign.recent_actions %}

    <p> {{ action.user.first_name }} {{ action.user.last_name }} from {{ }}, {% ifequal "United States" %} {{ action.user.state }} {{ }} {% else %} {{ }} {% endifequal %} said "{{ action.custom_fields.comment }}"</p> {% endfor %}

Redirect option for action pages

We added support to permanently redirect an action page by creating a page field called "redir". The value for this field should be the full URL you'd like to redirect to (eg

Currency account switcher

There's a new checkbox on the Step 1: Action basics screen for donation pages that's only relevant if you're set up to accept donations in other currencies. In that case, checking the box will add a currency switcher to your donation page display (using the original template set). There's an option on the screen for each currency for which you have a Braintree account set up. Users can select their desired currency and their donation will go through the corresponding account. If you include the switcher on a page with a product, product orders may fail because products are associated with only one currency.

Source mailing validation in the uploader

When importing actions with a column for the source mailing id, the import will fail if the user was never sent the mailing entered for that row.

jQuery upgrade

We updated some actionkit.js code that didn't work with jQuery 1.11. Existing templates remain on 1.3.1, but if you need to upgrade to a newer version, we've fixed the known blockers. If you do upgrade, retest your forms: there could be more incompatibilities we haven't discovered, and any custom JavaScript you've added may need tweaks as well.

Bug fixes

We fixed a variety of bugs including a couple broken links in the manual and a couple problems with advanced user search in the admin. Also, one of the changes we'd made to improve page load speed was sometimes breaking click tracking. This has now been fixed so we'll redirect your link if we need to for click tracking to work, but not otherwise.


Hey ActionKitties! This release, which you'll see tomorrow morning, we've got a bunch of report improvements along with an improved subject line testing display and some UI improvements.


  • There's a new "Group by" category in the display section in the query builder. These are for use with a selection from the "Totals" category. We've added two options so far to the user query builder - tags and lists. These choices add a new row for each new value for the object selected. For example, I can select tags and count of users to see a count of users for each tag in my database.
  • We've added counts and rates for unsubs, bounces, and spam to the mailing query builder. There's a drop down that allows you to compare rates looking at the results 24 and 72 hours after the send. Next release we'll be adding options for looking at rates 1, 2, 3, 4 and 12 hours after the send.
  • You can add a display name for the default column header when you use the query builder. Select an option in the display box, then select "as" and type in the header you'd like displayed.
  • The user query builder now has display and filter options for custom action fields.
  • You can hide the AK original version of reports.
  • There's a new setting on the CONFIG screen for Query Template. Every new query report will have this template selected by default.

Target district names

We've exposed the standard name for state legislative districts in the UI and it's available for queries as core_target.district name. This is particularly useful for states with unusual naming conventions, where the codes supplied by our vendor didn't always provide a clear mapping to the district.

Subject line testing display

The individual mailing report has a new option for displaying your rates. Raw numbers shows the current information. Rates Summary gives you an interactive table that displays the rate range for opens, clicks and actions for each subject line. The subject that is currently ahead under each of those categories is displayed on top when you click the category name. For example if you click "Actions", the subject with the best action rate is displayed first. The rates are shown as a fuzzy bar with numbers representing the range of rates at a 95% confidence interval. The further apart the rate ranges are, the more confident you can be that the difference between subjects is meaningful.

UI Improvements

Along with various minor improvements, we changed the order of the proof options and the proof button in the mailer.


Hey ActionKitties! I'm really excited about this week's release and hope you all will like it too. Check out the lovely new design for the mailings compose page to start (once the release hits your instance tomorrow morning) and let us know what you think. And some other stuff!

  • New compose page design in the mailer: In addition to a more visually appealing appearance and more consistent functionality, we've re-ordered the fields so the most frequently used are higher up. We think this will make creating mailings faster and easier, but probably it'll take some time to adjust for those of you who have been using this screen for years. The proof section at the bottom has been changed so you can send yourself a proof without opening it. You can open the section to change the proof count, send proofs to others, and/or see proofs of the email that particular users will receive.

  • Changes to "from lines" for emails from users to improve deliverability: Recently Yahoo and AOL have changed their policy so you can't send an email using a "From" address with "" unless you are sending from Yahoo's servers. This is to protect against spammers and other email providers may follow suit. This doesn't affect the mailings you sent from ActionKit, but we have changed the "From" lines in TAF emails and immediate signature delivery emails because these were showing the user's address.

    Now these emails show the user's name with an email address in your domain, while the reply-to still displays the user's email. By default the email address in your domain is "bounce@[yourdomain].org", but you can set this to something else in your domain from the CONFIG screen.

    For example, if I send a TAF message to a friend from my test instance, it looks like this:

    from: Tanya E Africa I <>

    reply-to: Tanya E Africa I <>


  • We improved the speed of mailing builds for mailings that include conditional content triggered by a tag.
  • We added a write up on the thank you page and other changes to the original template set that went out in the last release:
  • We added a favicon.
  • We hid the delete link for reports, which was mistakenly exposed but didn't work.
  • We fixed a problem with copying old surveys and a bug in the query builder for searching on a list of mailing ids.


Hey ActionKitties! Hope you all had a happy April! This release we have beautified the original templates, made custom fields a bit easier to use, and fixed some bugs, among other things. As always, you'll see these changes in your instance tomorrow morning.

  • Improved original templates: We've redesigned our original templates to be more visually pleasing and user friendly. Your pages won't change unless you incorporate the new design.

    The biggest improvements are in the thank you page and are generated by the new ak-look2014.css. You can incorporate this CSS into your pages directly or pull specific sections to get pieces you'd like.

    Most of the page types have also had a basic redesign and some of these changes are in the templates themselves. If you copy the "Original" template set for your next custom set the new design will be incorporated.

    We'll be adding some screenshots and notes detailing the changes to the manual.

  • More options for custom fields: For custom page, user and mailing fields, we've added an option for setting a display name to be used throughout the admin. You can include spaces and special characters and generally make the name other staff will see more descriptive. You still need to use the name, not the display name, to include the field in any code or HTML. Also, you can drag the fields to reorder them and save the new order to be used throughout your instance.

  • "States" on the mailer targeting screen can now be used for states or regions. These are mutually exclusive categories so you have to select States or Regions. You do this by toggling between them using the link under the box. 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.

  • Braintree donation data capture improvements: We:

    • added capture for error messages like fraud and duplicate donation,
    • fixed a rare recurring sync condition which incorrectly recorded some in-progress Braintree transactions as failures,
    • set card_num_last_four to blank for failed Braintree donations where last four is not known and not available.
  • Miscellaneous: Various and sundry including changes to make the report system more robust and:

    • Uploads of CSV files for custom targets now get unzipped and have BOMs stripped if needed, support UTF-8, and have protection for latin1 encoding.
    • The survey downloader is better able to handle large reports and we improved how we display responses where the question allows multiple selections.
    • There's a new warning during survey creation if you create two questions with the same name.
    • We now only use the zip+4 we get from geocoding to fill in blanks for event addresses, not to overwrite them.
  • Bug fixes

    • The mailing query builder no longer fails on display of targeting includes/excludes.
    • Advanced user search results stay consistent over multiple pages of results.
    • Clicks on one-click pages are properly attributed to the relevant mailing.


Hey ActionKitties! Lots of new stuff and some bug fixes coming to your instance tomorrow morning (which is also when you'll be able to access the docs referenced below).

  • You can import a donation to a donation page instead of an import page using the REST API to POST with a payment_account parameter specifying your import stub account (if you've requested one). A field for account has been added to the core_order table.
  • You can create a Donation Page using the API without including an hpc_rule in the call.
  • Products and candidates can be added to DonationPages using the API.
  • You can search for candidates on name or index.
  • Fixes to some problems with staff user permissions
  • Staff users who aren't super users but have permission to view reports can now use the search box and view the full list of reports.
  • We updated mailings permissions so custom fields are accessible to anyone with any mailing permission.
  • Staff users without staff permission can't see any admin screens.
  • International organizing
  • We added a section to the donation query builder for Multi-Currency fundraising.
  • We now pass event search results a machine-friendly timestamp; this could be used to format the date and time appropriately for other countries (possibly using |load_datetimeor jquery/globalize).
  • We've made a couple of small changes to make pages load a little faster. In your mailings: we no longer redirect links to pages hosted at your ActionKit domain those URLs won't change to "/go/". Pages on other domains (whether or not you've registered the domain on the mailings tab) will still redirect. More on page load speed next release.
  • There's a new client level CONFIG setting for the default recognize user behavior for new pages and the setting for auto-excludes in the mailer has been moved to the CONFIG screen.
  • You can suppress the confirmation email for a page by including a hidden form field in the template and then including skip_confirmation=1 in the URL or in an API call. Read more:
  • Event page improvements
  • The contact info update page for attendees should always recognize the user (using update=1 in the URL in the cases where it wasn't previously).
  • We'll redirect to the right page in the rare case where a user ends up on a host page in the wrong campaign.
  • The Original templateset's event host form now hides the "Event is at my house" checkbox if the user form doesn't ask for street address.
  • Miscellaneous and bug fixes
  • To avoid time outs in the admin, we limited the number of recent pages showing under actions for mailer targeting to 250 as well as any page that have been targeted by mailings in the last 14 days. Other pages are still available via autocomplete.
  • We added a warning if you copy the old original templates, since the new original has our latest code.
  • We display a warning when we skip a row in an upload because it has a duplicate donation_import_id, instead of silently dropping the row.
  • We pass order_currency and sessionID to MaxMind if you're using it for fraud filtering for donations.
  • The report query builder no longer fails on multiple custom fields with the same name for a single user/page/action.
  • We've changed mailing the auto excludes feature to prevent a rare error message when using it together with manual mailing excludes.


Hey ActionKitties! We've got two big new features and a cool little one in this release, coming to your instance tomorrow morning.

Tab-completion for report SQL: If you're writing a query report using SQL, you can tab to complete the table or column name in most cases. Try it - it's awesome!

Petition delivery system: This release includes an improved system for automating delivery of petition and letter signatures, including a new option to create automated batch deliveries.

When you create a petition or letter page, you'll see a new step 4 for setting up signature deliveries. On this screen you can set up immediate deliveries as you could previously. You can also set up a batch (or daily) delivery and we'll automatically switch to batch for any page where signatures exceed the immediate delivery threshold.

The rules for immediate email delivery are similar to what they were:

  • Federal legislators - no immediate delivery available.
  • State legislators and custom targets - immediate delivery of up to 30 signatures a day to targets with an email address. You can request an override from Support but we recommend doing so only if the target is expecting to receive a lot of email (for example, if an agency has set up an email address for public comments or if you've talked to the target in advance). Targets can (and have) marked emails as spam and escalated their complaints with email providers when they received a high volume of emails, leading to significant deliverability problems for the group.

You can also choose to send fewer (or no) immediate deliveries before switching to batch. Batch deliveries send an email to the target once a day with a link to download all signatures. This gives you an option for automating delivery to federal legislators (if we have a Legislative Director email address in the database), and allows you to automatically send a daily mailing to state and custom targets.

You can skip setting up your batch delivery if you'd like to come back and do it later or if you want to deliver signatures by hand or in bulk through the mailer. Unless you ask us not to, we'll send the page creator a warning that signatures are going undelivered if you haven't finished batch set up but you've exceeded the immediate delivery limit. Once a page goes to batch delivery, all future deliveries are batch also.

Tomorrow you'll be able to read more detail here:

Display mailings as web pages

We've added a new option to the compose screen for mailings that allows you to make the mailing viewable from a browser.

You need to include a link in your mailing or wrapper:{{mailing_id}}. When combined with the AKID that is added in the mailing process, users can click this link to recreate their personalized email. If an invalid hash is provided, or if you modify the link, ActionKit will display an anonymized version of the message. If the message includes snippets with the "require_value" tag no web view is available.

We've also added a new configuration option so every new mailing you create can have web view enabled or disabled by default.


Hey ActionKitties! We've got some pretty cool features in this release include accepting donations in other currencies, donation import through the REST API for external donations, and geocoding by state or country for custom targets.

Also, as mentioned in the last release notes, we added historical donation imports to core_transaction to conform to the new standard for imports. This makes donation querying easier - no more pesky left join to core_transaction if you want to see a donation total with recurring and imported donations! You can still tell which donations were imported because the account field in the core_transaction table is set to "import".

Read more below about these and other changes coming to your instance tomorrow morning.

Accepting donations in other currencies: To accept donations in other currencies you need to be using Braintree CSE for your donation processing. You'll need to do some additional set up with Braintree for each currency you wish to accept. Then you can create donation pages, send mailings, generate reports, etc. using the currency. The set up is similar to using other languages; donation campaigns will generally need distinct pages and mailings per currency and we've made some corresponding changes to reports. Read more here:

Geo-targeting for custom targets: You can now assign a state or country-level jurisdiction to a custom target group. A group with a jurisdiction will work just as legislative target groups do:

  • Only users who are known to live in the states or countries specified will be able to take action on a call page (unless you provide a fallback URL).
  • Petition signature and letter delivery jobs will show constituent signatures only for each target (unless you select the setting to show all signatures to all targets).
  • Custom target groups with a jurisdiction can be selected from the target groups list in the mailer so you can limit recipients to only users in the specified states or countries.

The new setting is available on the custom target group screen. Edit an existing custom target group or add a new one and you'll see a new drop down for jurisdiction at the top. For each target, you'll need to enter the corresponding info. For example, if you select "state" as the jurisdiction you must enter a state for each target.

You can also upload custom targets from a CSV and assign jurisdiction if desired.

This doesn't affect any of your existing custom target groups unless you edit their settings.

Recording external donations in ActionKit using the REST API: If you want to use the API to record data for donations collected outside of ActionKit, you first need to contact support to request the addition of a stub payment account to your site configuration. Once that's in place, when you create a donation page in the admin interface you'll be able to choose the stub in the "Payment account" menu. Donations made on pages linked to a stub payment account won't result in a credit card charge -- this is just for donations you've already collected some other way -- but the donation will be recorded in both the core_order and core_transaction tables for use in reports.

Read more and see a sample POST here:

A new way to tell which of your reports came from us: If you've edited one of our original reports, or you edit one in future, we'll save a copy of the original report to your instance for reference. Your edited report will say "Customized ActionKit report" in the description box on the report list and provide a link to "view original". Only the original will have the "wawd_standard" tag.

New organization wide configuration options: From the config dashboard super users can now select a default language (aside from English) to be used in new pages and new email wrappers. You can also choose to have report downloads zipped by default.

Fix for bug with required fields for donation pages: A change in the last release meant that donations pages edited in the last two weeks had their required fields set back to the default. This would only affect you if you required additional info like phone number for a donation page and edited that page recently.


Hey ActionKitties! There is a LOT in this release. As always, coming to an instance near you tomorrow morning.

BETA: You can enable the new auto excludes feature in your instance to help ensure that each subscriber gets no more than one regular mailing on a given day.

Auto excludes is an optional new feature that you can turn on and configure in your instance. It changes how you set up and manage drafts.

If you turn on auto excludes for your organization, you specify a send date on your drafts, and sort drafts into an order to determine what excludes what. Typically, you place broadly-targeted drafts (that should exclude most others) at the top of the order, more narrowly targeted drafts (excluded by the broader drafts) further down, and random-sample tests (which usually exclude nothing, to get a clean random sample) at the bottom.

Auto exclude is only relevant if your goal is to avoid overlap. If you want to people multiple emails per day (when they've subscribed to more than one newsletter, say), or if you don't usually have more than a couple mailings on any given day, it might not be for you. But, if you try to mail most users once a day and have a lot of mailings to manage, we hope it can help.

Before turning this on in your instance we suggest reading the documentation. Read more, including how to enable this feature in your instance at

Thanks to CREDO and PCCC for some initial beta-testing!

More organization wide settings

Last release we added a link to the dash/config screen where super users can manage some settings for your instance.

This release we've added some additional settings:

Donation Page Defaults: Defaults you select here will be pre-selected for every new donation page created in your instance. You can change any of the settings when you create the page as you can now.

Allow International Addresses: If enabled, new pages will have the "allow international addresses" box checked and zip removed from the required fields. Note: If you use PayPal or Authorize.Net as your processor, you still need to disable their AVS verification or you will not be able to accept international addresses.

Minimum Amount: Amount entered here is used for new donation and recurring donation update pages.

Payment Account

Suggested Ask Formula

Mailer Targeting Defaults: Select a default language and/or a default list in this section and they'll be pre-selected as includes on the Select Recipients screen for every new mailing created in your instance.

Uploaded one-time donations now look like ActionKit-processed donations

With this release, one-time donations uploaded to ActionKit through an import page will be recorded in your database in the same tables as donations processed on an ActionKit donation page. Until now these donations have been recorded in the core_order table, but not core_transaction. From now on, we'll also add a placeholder row to the core_transaction table with the account field set to "import".

This change will apply to all one-time donations imported in future and we'll soon be applying this to your past imports. Once we've fixed historical imports, donations will be treated consistently in all reports without changes to the SQL. For example, the "major donors" mailer query looks for donors with more than $250 in the core_transaction table in the last year so all imported donations would previously have been excluded but once we complete the update of past data all donations will be counted.

For example, the "major donors" mailer query looks for donors with more than $250 in the core_transaction table in the last year so all imported donations would previously have been excluded but donations imported after this release will now be counted.

This does not affect recurring donations.

You can assign a mailing_id to import actions.

When you upload a CSV to an import page, ActionKit records an action in the core_action table for each user in the file. You can already set the source by including a "source" column. Now you can also add a "mailing_id" column and we'll save the value to core_action mailing_id and assign the source "mailing" (as we do when a user follows a link in an AK mailing and submits on the page).

New option to make a congressional target group by pasting in a list of targets and improved target group creation screen

From the pages tab, click legislative in the targets section under related tools and add or edit a group to see the improved layout. There's a new count at the bottom of the page that shows the total number of targets matching the criteria on the page.

The People to Target and People to Exclude sections both have a new option. You can now select records in bulk by copy-and-pasting in a group of district codes ("AZ_03 MI_13 CA_12") or a comma-separated list of names ("Conyers, Grijalva, Pelosi").

New checkbox allows you to make specific questions required on survey pages

There's a new checkbox, "Make This Question Required", at the bottom of the section for each survey question on the Edit Content screen for survey pages.

Final (hopefully) fix for from line issues

FromLines are now always standardized to "Display Name" <>, even if there's a comma and/or Unicode in the Display Name. We believe this will fix the outstanding issues with using foreign characters in from lines in the major email clients.

Variety of report-related changes

  • You can now include user fields in CSV downloads through the survey downloader on the reports tab.
  • The query builder displays and filters for Users > Phone Numbers, and also for Donations > User > Phone Numbers, now has an additional menu allowing you to select which kinds of phone numbers you want.
  • We increased the limit on the number of rows that can be returns for dashboards. Let us know if something gets stuck!
  • A query report builder fix for "between dates" criteria and some additional clarifying notes, text changes, and layout improvements.


Hey ActionKitties! For this release we've got a mix of small (but exciting) new features, bug fixes and UI improvements. As usual, these will be in your instance tomorrow morning.

  • Organization-wide settings: Super-users can currently define a few settings and accounts for your organization from the /dash/config screen.

    We've added a link to this screen called CONFIG in the header in your instance. This shows only if you're a super user.

    We've also exposed another setting. For all the text boxes in the admin (mailing compose, page contents, after action emails, etc.) you can decide whether they should default to plain, code or visual editor mode. For fields like templates that don't support the visual editor you can set the default to plain or code. Remember this applies to your entire admin instance for all staff users. More settings (like minimum donation amount) are in the works.

  • The select box for mailings on the mailer "Select Recipients" screen now includes notes and counts.
  • Mailing reports will now ignore clicks to pages with a URL beginning act/unsubscribe in addition to those beginning cms/unsubscribe.
  • Multi-word searches are now treated as a single search phrase. For example, if you search for a Today's Test from the page search box, the results will include a page titled Today's Test but not one titled Today's Donation Test.
  • By default, donation pages will now accept zip codes entered with a dash (e.g. 96160-1111).
  • Actionfield data is now available through the REST API.
  • We made two changes to uploads.
  • If your upload file includes a column for "donation_date" we use this to set the created_at date in core_order but not core_action. This has led to query discrepancies for some groups. Now you can use "created_at" as the header instead if you'd like the upload to set the created_at date in both core_order and core_action.
  • We corrected the source codes assigned to new phone numbers in the core_phone table. An uploaded phone will have a source of "admin". A phone added through the API has a source of API. User-enter phone numbers have a source of user.
  • Finally, we made a few design improvements like better wrapping of long words on the template set list and a consolidated related tools section in the mailer.


Happy New Year ActionKitties! We have a gigantic release coming out tomorrow morning -- lots of new stuff and bug fixes. There's so much in this one that I've just summarized the major stuff at the top and provided a link to the docs for more detail.

  • Mailer optimization: This release includes a number of changes to speed up creating mailing sets and sending mailings. These changes aren't otherwise visible but we optimized various things including advocacy target snippets and related recipient selection, exclusions by tag, and link processing. Thanks to PCCC, CREDO, Mayors Against Illegal Guns and many others for helping us identify the pain points.
  • Survey builder: You no longer have to enter the HTML yourself for most survey question types. We've added a point and click interface with options for drop downs, radio buttons, text boxes, numeric responses and more. Thanks to Moms Rising for first requesting this. Read all about it here:
  • Query builder for user advanced search: Advanced user search now uses the filter section of the user query builder, giving you lots more search options! As with reports, you can slow your database down quite a bit with a bad query. Please check long-running searches for typos and logic mistakes, and let us know if a valid search is very slow. You'll also see new links to view the SQL (thanks to 350) or create a report based on your search.
  • WYSIWYG changes and Syntax coloring editor: We added support for the CodeMirror syntax-coloring editor pretty much wherever you work with text (text boxes for pages, mailing compose screen, etc.).

    Select "Code" in the toolbar and your entry is color-coded for easier viewing. Elements like JavaScript and CSS style tags are recognized and given a tinted background. Select "Plain" to remove all highlighting.

    We also standardized the text editing sections. Full page is available now in most places and supports snippets, which are displayed only when you click the snippets link.

    Finally, we added a new show/hide toolbars button that exposes a second bar with new formatting options, and a redo button next to the undo button.

  • Part I of petition delivery improvements: We're working on improvements to the signature delivery system for petitions and letters. In this release, you'll see two new features:
  • Download tracking: From the delivery job list, you'll see a new link for "Stats". This screen shows which targets have downloaded any signatures. This will only apply to future downloads. For now, please ignore the "Default" link on this screen.
  • Adding target contacts: You can already edit contact information for legislative directors for federal legislative targets. However, you couldn't previously add a legislative director where we didn't already have one in the database. Now you can. You'll see an "Add" link next to the target name on the download links screen for targets without a contact and an "Edit" link for those with.
  • XML-RPC API to SSL: All calls will be required to use SSL as of this release. We've been in touch with you if we saw requests to the XML-RPC API using HTTP from your instance.

Below I've listed a bunch of smaller changes you'll see in this release. Please ask if you need more info on any of these!


  • Users subscribed through the uploader will be assigned change_id 9 in the related core_subscriptionhistory entry. Such users were previously assigned change_id 7 for subscribe_api because the uploader technically uses the API. Both are distinct from change_id 2 for subscribe_import, which is used only during initial client imports when we are bringing data over from a legacy system.

  • The created_at timestamp in the core_subscription and core_subscriptionhistory tables will be set to match created_at for the action that subscribed the user. Previously we would use the created_at value in your upload for the action but the date and time of the import for the subscription data.

    The new change_id and this change will only apply to future records.


  • New section of options for numeric comparisons ("is at least", "is at most" "is between") for custom fields in the query builder. Thanks to Mercy Corps for suggesting.

  • We added the wawd_standard tag to some reports that were missing it and added back some recurring donation reports that were accidentally removed.

  • The cards_about_to_expire query in the query library limits results to users with an active recurring profile instead of users who've ever had a recurring profile.

  • The Compare Mailings report uses the scrolling layout for improved legibility. Notes are now displayed as well as subject for each mailing in the selection list.

  • The SQL generated by the query builder is displayed using the new syntax-coloring editor to make it easier to parse. We also fixed some errors in the SQL generated by the query builder -- thanks to ProgressNow for finding!

  • Query Report templates: Query reports are now run differently to allow reports that use last_run to skip the last_run clause when doing a full refresh. This can make a big difference in speed for large tables since it allows MySQL to choose a better index. In your query, you can test for whether to use a last_run clause in a template by checking if the variable partial_run is true. For example:

    SELECT COUNT(*) FROM core_action {% if partial_run %} WHERE created_at BETWEEN {last_run} AND {now} {% endif %} ;


  • Event custom fields are now available to the Event Search Results screen so if you edit this template you can display custom information, like time zone, for each event. Thanks to DFA for the use case!
  • We added event-related snippets to the confirmation email. Thanks CREDO for requesting.
  • By popular demand, the page title on the browse all pages screen now links back to page creation and editing instead of the page view.
  • We fixed a bug with the live validation that runs as the user is filling out a Tell a Friend. Thanks to CEL for finding.


  • We fixed some problems with using non-ASCII characters in from lines. You can now include accents in sender names. Thanks to ONE for working with us on this.
  • We added clearer messages for mailings that fail for specific reasons (e.g. a delivery mailing where the delivery job doesn't have PDF or CSV checked).
  • We added queries to the query library for mailer targeting for users who opened a mailing and users who clicked a mailing.
  • We also fixed a few bugs with recurring mailings, a bug that made the custom field dropdown appear inconsistently, and a problem Food Democracy Now found with displaying old drafts with an expired mailing set.


  • We strip characters like Ÿ that ActionKit sometimes choked on before saving custom field values.
  • We cleaned up old transaction data where some failed recurring payments were recorded with status=completed and success=0. Depending on your queries, this may reduce your successful recurring numbers in some reports but this reflects actual payments received.
  • We added a multiply filter to template tags so you can do things like: {{ suggested_ask|multiply:"2" }}. Thanks to J Street.
  • We no longer require SSL for public views in the RESTful API (but we still send the full record for auth'ed connections).