Cross-site Prefill

You can enable prefilling on your pages using EveryAction's Action Profiles -- a pool of millions of cookie-based saved profiles from users who have previously submitted an action with one of EveryAction's clients. Enabling this feature can boost your conversion rates from Facebook, your homepage, or other places users can't be recognized by their AKID.

If you enable this feature, your users' data will be saved to the shared profile pool and may be prefilled on the forms of any other participating ActionKit or EveryAction client.

Note

You must ensure that any disclosures or privacy policies on your site are compatible with this behavior.

Turn on this feature by following the the "Prefill settings" link on the Pages Tab. You'll see a list of important information and a link to Enable Prefill Sitewide.

Click the link and we'll add the {% load_prefill %} template tag to each of your templatesets' wrapper.html template. If you've linked templatesets with GitHub, you need to update your templatesets in GitHub as well.

Contact information, occupation and employer, and several custom fields that are built-in in EveryAction will be available for prefill (if the user has submitted values for them). Read about the available fields below.

This isn't a one-click donation feature. No payment information is prefilled. One-click donations are coming in the future!

You can disable prefill for certain pages or templatesets if you'd like. Prefill is disabled automatically on some page types.

Remember user privacy: don't attempt to access user data outside of using it to prefill forms, and make sure the user sees everything that was filled in and has a chance to edit or clear it before submitting.

Important Details

  • Prefill is only available on pages hosted with us, not on forms embedded on other sites.

  • Prefill only works on pages hosted securely (using ``https://``). You can ask Support to make HTTPS your site-wide default.

  • User recognition based on AKID still works the same way. For example, users following a link from a mailing will still see ("Not Bob? Click here") if we have all their required data. Recognized users' contact info isn't saved for future prefill.

    Prefill triggers only when a user would otherwise see a blank form -- so it will work if an AKID is passed but the user isn't recognized whether that's due to page settings or missing data in the user record.

  • Prefill will try not to overwrite data the user has already entered in order to minimize the disruption if prefill starts after the user starts typing.

  • Prefill ignores inputs of types 'hidden' to avoid putting stored data where the user can't see it. It also ignores 'radio', 'checkbox', 'submit', and 'image'.

  • Prefill doesn't happen after the user presses the Back button.

  • Country name will prefill from the user's two-letter code in their EveryAction country field, if available. And the user's country name entered in ActionKit will be saved as the corresponding two-letter code in EveryAction. If you see country prefill failing for certain users, let us know.

  • Similarly, the prefiller maps back and forth between ActionKit's combined 'name' field (if you use it) and EveryAction's 'FirstName', 'LastName', etc.

  • The 'phone' and/or 'phone_type' fields available in some older or hand-coded ActionKit templates will not be prefilled. You must Customize Fields and select Separate Phone Fields and pick the Mobile, Home and/or Work Phone fields available in the User Form Fields section when creating your page.

  • Because we disable prefill when users are recognized based on their AKID, "Always Visible" or "Always Required" fields may not be prefilled even though the user has a value in EveryAction.

  • For GDPR compliance, ActionKit won't save prefill data when the user says they're in one of the privacy record countries you've defined on the CONFIG screen.

If you're confused by some prefiller behavior, or unsure how it fits in with a customization of yours, contact us over Support.

Troubleshooting

If you've turned prefill on but don't see it working here are some things to check:

  1. Are you using a secure (https) link? You can ask Support to make HTTPS your site-wide default. (You won't have to get certificates -- we do that -- but you should check that your pages work on HTTPS links first.)
  2. Is your page hosted on your ActionKit domain? Prefill doesn't work on externally hosted pages.
  3. Are you seeing "Not Bob? Click here"? If so, the user has been recognized and nothing will be prefilled.
  4. Prefill is disabled on some page types including unsubscribe, login, user update, and thanks pages. You'll see an HTML comment saying "prefill skipped: does not apply to this page type" in the page source if this is the issue.
  5. Are you using ActionKit's latest JavaScript (/resources/actionkit.js)? Prefill works best with jQuery 1.5+.
  6. Are only some users affected? If some users can save prefilled data but others not, it might be because of a privacy-oriented browser feature or extension. For example, Safari has cookie blocking that might break prefill for some users.
  7. Still a mystery? Check your templateset -- make sure the {% load_prefill %} snippet hasn't been removed from your wrapper.html. If it's there, search the page's HTML source for "prefill disabled" or "prefill skipped", which could explain why it wasn't loaded.
  8. Are you sure the user has saved data? We won't save data in the "privacy record countries" for international groups set up for GDPR compliance, or data with non-Latin characters.
  9. Finally, make sure prefill hasn't been intentionally disabled using one of the methods in the next section.

If none of those explanations apply, contact Support for help.

Disabling Prefill in Some Places

You can turn prefill off for your entire site from the "Prefill Setup Screen".

To disable prefill only on certain pages, you have several options. Any user data entered will not be saved to an Action Profile anywhere you disable prefill. Options:

  • You can disable prefill on a specific page, by passing kiosk=1 in the query string for the page.
  • You can also disable prefill on a page by selecting the custom page field, disable_cookie_prefill, and entering any non-blank value on the Action Basics screen for your Page. This field is not created automatically so if you don't see it in your instance, you will need to add a custom page field with that exact name.
  • You can disable prefill on any page using a specific templateset in a similar way. Select the custom templateset field called disable_cookie_prefill and set it to any non-blank value. Again, you will need to create this custom templateset field if you don't see it in your instance.
  • For other variations, you can wrap the {% load_prefill %} tag in a Django {% if %} statement.

Remember that for some key situations like user recognition, prefill is off anyway.

Page Types Without Prefill

These are the page types where prefill is always disabled:

  • event_attendee_tools
  • event_chooser
  • event_create
  • event_created
  • event_host_tools
  • event_search
  • login
  • logout
  • password
  • petition_download
  • reset
  • reverse_donation
  • unsubscribe
  • user_merge
  • user_update
  • user_view
  • whipcount_results

Available Prefill Fields

Most user contact fields, plus Occupation and Employer, are available for prefill by default. Postal code and region are not supported.

EveryAction also has built-in fields for things like gender, social media profiles, and date of birth. ActionKit maps many of these to custom user fields -- as long as you've created an allowed user field in your instance with the correct name. For example, from the User Tabs follow the Custom User Fields link, select Add allowed user field and enter twitter_handle in the Name field. ActionKit automatically prepends user_ so the field will be saved to the database as user_twitter_handle. Then, if you include this field in your user form on a page, the value in the TwitterHandle field in EveryAction will be prefilled for your user if there is one.

All current field mappings are listed and categorized here:

EA field AK field
Available by default:
FirstName first_name (or name)
MiddleName middle_name
LastName last_name (or name)
Email email
AddressLine1 address1
AddressLine2 address2
City city
StateProvince state
PostalCode zip
Country country
HomePhone home_phone
MobilePhone mobile_phone
WorkPhone work_phone
Prefix prefix
Suffix suffix
Occupation action_occupation
Employer action_employer
Needs custom user field:
FacebookProfileUrl user_facebook_profile_url
SpouseName user_spouse_name
TwitterHandle user_twitter_handle
WorkAddressLine1 user_work_address_line1
WorkCity user_work_city
WorkEmail user_work_email
WorkPostalCode user_work_postal_code
WorkStateProvince user_work_state_province
Needs specially formatted user field (see below):
DateOfBirth user_ea_date_of_birth
Ethnicity user_ea_ethnicity
Genders user_ea_genders
PreferredLanguage user_ea_preferred_language
Pronoun user_ea_pronoun
Race user_ea_race
SexualOrientation user_ea_sexual_orientation

Occupation and Employer are mapped to the custom action fields that ActionKit donation forms use to capture these values.

There are some fields where EveryAction uses a special format.

DateOfBirth's has the ea_ prefix because EveryAction uses the U.S. date format, which may clash with some clients' existing date_of_birth custom fields. You must create a custom field with the ea_ prefix and include it on your Page to get this field prefilled.

The other custom fields use the ea_ prefix because values are stored as numeric codes that you need to consult the ActionTag documentation to look up.

If you're using a modern templateset, the easiest way to use these is to create an allowed user field as described above. Set the Field Type to "Select From List" and set the "Field Choices" based on the table in the ActionTag docs, e.g. 1=She/Her/Hers. When you create a page and customize the user form fields, select the custom user field and the choices you defined will be displayed. If they are not displayed, you must enter them here manually (or update your templateset).

For some of these fields, like Genders, EveryAction supports selecting multiple options. We don't support that on ActionKit forms (yet). For now, users with multiple options selected will only have one of them prefilled and saved in ActionKit. Using the single prefilled value won't delete the multiple values they have saved for prefill elsewhere, though.

Advanced use

The JavaScript hooks actionkit.beforeCookiePrefill and actionkit.cookiePrefilled are available. Currently they should return undefined (or not have an explicit return value); returning true or false may affect form behavior in the future.