Import and bulk-update campaigns
Create campaigns from a CSV, or change many campaigns at once by exporting them, editing the file and importing it back.
The campaign importer does two jobs. It creates new campaigns from a spreadsheet, and it updates existing ones in bulk: export your campaigns, edit the file, and import it back. Any row that carries a Campaign ID updates that campaign instead of creating a new one.
Check whether it is a form setting first
Address fields, opt-in checkboxes, amounts, payment methods and the form's wording belong to the donation form, not the campaign. The importer cannot change them, and usually you do not need it to.
Most accounts point many campaigns at the same form. Edit that form once and every campaign using it changes with it. Go to Forms, open the form, and change it in the builder. See Add custom fields to a donation form for opt-ins and other questions, and Build a donation form for the rest.
Use the importer for what lives on each campaign: title, story, goal, status, type, template, images and which form it uses.
Update many campaigns at once
- Go to Campaigns and select Export.
- Tick Campaign ID, Title and Type, plus the columns you want to change, such as Content for the story. Then select Email full export. The file arrives by email.
- Open the file in your spreadsheet app and make your edits. Delete any column you are not changing, but keep Campaign ID, Title and Type.
- Save it as a CSV. If it has more than 100 rows, split it into files of 100 rows or fewer.
- Back on Campaigns, select Import and upload the file.
- On Map columns, check the matches, then select Continue to preview.
- Choose an Import mode, review the rows, and select Import campaigns.
Use the emailed export, not the download. Only the emailed file contains the story, the form ID and the image URLs, and its column headers match the importer without any changes. The Download file is built for reading, not re-importing: its status column holds list labels such as Active and Completed, which the importer rejects, and its Goal (cents) column gets matched to the dollar goal field, which would make every goal 100 times too big. See Export your data for the difference between the two exports.
Create new campaigns
- Go to Campaigns and select Import.
- Select Download campaign template for a file with the right headers.
- Delete the sample row. Its values are placeholders and would fail.
- Add one row per campaign. Only Title is required.
- Upload, map, preview and import as above.
A row without a Campaign ID creates a campaign, unless the import mode matches it to an existing campaign by title (see Import modes below).
Two defaults to know about. A new campaign is published straight away unless its Status says otherwise, so put hidden in the Status column to create campaigns as drafts. And a new campaign with no goal gets a $10,000 goal, except earmark campaigns. The preview warns you when that applies.
Columns you can import
| Column | What it accepts |
|---|---|
| Title | Required on every row, 100 characters at most. |
| Type | general, earmark, p2p_fundraisers or p2p_teams, in lower case. See Campaign types. |
| Goal amount | Dollars. $ signs and commas are fine. The minimum is $1. |
| Goal amount (cents) | Whole cents, for files that store money that way. Map one goal column or the other, not both. |
| Status | published, hidden or archived. hidden is what the builder calls Draft. See Campaign status. |
| Description | The campaign's short description. |
| Story / content | The campaign page story, as HTML. |
| Campaign ID | The cmp_ id of a campaign to update. |
| Template ID | The pgt_ id of a page template. |
| Form ID | The frm_ id of one of your forms. |
| Photo URL and Cover photo URL | A link to an image starting http or https. |
Images are fetched from their URL when the import runs. If one cannot be fetched, the row still imports without that image and the results file says so.
What a blank cell does
A blank cell leaves that field as it is. So does a column you leave out or set to Don't import. An import never clears a field, so to empty one, edit the campaign in the builder.
There are two exceptions:
- Type. A blank or missing Type is read as
general. Update a peer-to-peer or earmark campaign from a file without its Type and it becomes a general campaign. Keep the Type column whenever you update. - Title. Title is required even on rows that update a campaign, and the campaign is renamed to whatever the row says.
Import modes
The preview step asks how the import should behave.
- Dry run (report only) changes nothing and emails you a report of what would have happened.
- Add missing only is the default. It creates rows that are new, skips a row whose title matches an existing campaign, and still updates any row that has a Campaign ID.
- Add & update creates new rows and updates existing campaigns, matched by Campaign ID or, without one, by title.
A row with a Campaign ID updates that campaign in every mode except the dry run. An ID that does not belong to your account is an error. Title matching ignores archived campaigns, and if two active campaigns share a title the row fails rather than guessing. Use Campaign IDs for updates and none of this comes up.
Run a dry run first on any big change. It costs one extra pass and shows you which rows would fail.
Campaigns with unpublished changes
If a campaign has unpublished edits in the builder, the import updates that draft as well as the live campaign, so publishing later will not undo the import. The preview warns you which campaigns this applies to.
Long stories
Spreadsheet apps cut a cell off at 32,767 characters, and some quietly do it when they open a file. If a story looks cut short, the preview warns you before anything is written. Check the content column, and if a story really is that long, edit it in the builder instead.
File limits
CSV only. Export as CSV from your spreadsheet app, with your column headers in the first row.
Each run imports at most 100 campaigns. Rows past the 100th are left out of that run, so split a larger file into files of 100 rows or fewer and import them one after another. The preview shows up to 1,000 rows and checks the first 50 against your account.
What happens after you submit
The import runs in the background. The drawer says Import queued, and you get an email when it has finished. The email links to a results file listing every row as inserted, updated, skipped or failed, with the reason. The link expires after about two days, so save the file.
There is no undo. Keep the export you started from. Re-importing it puts back every value it contained.
Where to find the IDs
- Campaign ID: under the title on the campaign's page, with a copy button. You can also add a Campaign ID column to the campaigns list.
- Template ID: select New Campaign. Each template card shows its id with a copy button.
- Form ID: in the ID column of the Forms list, or on the form's page.
Permissions and sample data
Importing is limited to account owners and admins. Every team member can export.
If your account is showing sample data, the importer simulates the whole thing and writes nothing.
For contacts and past donations, see Import contacts and past donations.