Skip to main content
Easy Digital Downloads Documentation
Documentation, Reference Materials, and Tutorials for Easy Digital Downloads

Using Acquisition Survey

Setup and Usage

Once the Acquisition Survey extension is installed and activated, you can navigate to Downloads → Settings → Extensions → Acquisition Survey to adjust your settings.

With these settings you can manage the Label for the dropdown on checkout, if the field is required by the customer, and the items available for your customers to choose from.

Survey Title: This is the title that will appear above the dropdown list. Example: How did you hear about us?

Require Survey Response: Choose whether or not a response to the survey question is required.

Acquisition Methods: The list is pre-populated with some of the more common methods of acquisition, but can be re-ordered and have items added or removed according to your needs.

The end result is a new form element on the ‘Personal Info’ section of the checkout screen:

You can also see which acquisition method was recorded when viewing payment records in Downloads → Payment History. The acquisition information will be available in the Payment Meta section of each payment record.


Acquisition Survey also adds a new report to the reports section so you can get a breakdown of how your acquisition sources are performing.

To view reports navigate to Downloads → Reports and choose ‘Acquisition’ from the dropdown list then click ‘Show’.

The report view lists all current and past (identified with ‘inactive’) methods that have been registered with a payment:

Developer Info

Acquisition Survey offers a number of functions and filters that allow it to be extended.

Recorded acquisition methods are stored in the payment meta with the ‘meta_key’ of

You can retrieve a payments acquisition method with the call:

edd_get_payment_meta( $payment_id, '_edd_payment_acquisition_method', false );


// This filters the array of acquisition methods after they are returned from the database. Methods are in the form of a numerically indexed array.

// Example
array(1) {
	array(2) {
		'name'  => 'Customer Facing Name',
		'value' => 'payment-meta-record'
// Runs just before saving the acquisition method into the payment meta.
// Runs just before returning the number of sales for a requested acquisition method 'value'.
// Runs just before returning the total earnings for a requested acquisition method 'value'.