Import WhatsApp and manually closed sales
What you'll build: sales your team closes in WhatsApp, over the phone, or in person counted as real conversions, with revenue, matched to the right people, included in attribution. Time: about 10 minutes plus your spreadsheet. You'll need: a CSV of closed sales and permission to create integrations in Usermaven.
For a lot of businesses, the most valuable conversions never touch a website: the deal closes in a chat thread or on a call. Those sales deserve to be in your analytics just as much as an online checkout; otherwise, your reports undercount your best channel. This source lets anyone on the team import them from a spreadsheet. No code, no developer.
Step 1: Prepare the CSV
One row per sale, with these columns:
Column | Example | Why it matters |
|---|---|---|
|
| Matches the sale to a person. Use the same user ID your website uses if you have it. |
|
| The sale value |
|
| Three-letter code |
|
| A stable ID per sale — your protection against double counting |
|
| When the sale actually closed, with timezone |
A few rules that keep imports clean:
Give every sale a stable
deal_idan ID from your CRM, an invoice number, anything that never changes for that sale. It's what lets you safely re-import corrected files later.Never include card details, chat transcripts, or unrelated personal data. The file should contain conversion facts, nothing more.
Sales up to 24 months old can be imported.
Step 2: Upload and map
In Usermaven, go to Events → Event sources and click New event source.
Pick WhatsApp / manual sales from the catalog.
Enter a Source name, then upload your CSV (up to 50 MB or 250,000 rows). You can also download the CSV template if you're starting from scratch. If you're creating a new file, click Download template to start with the recommended CSV format.
Map the CSV columns to the corresponding Usermaven fields, including Identity, Revenue & currency, Event time, and External ID. You can also map Ad click IDs, Custom attributes, and configure Filters if needed.
Use a fixed event name like
offline_sale.Click Preview event to review how a row from your CSV will be transformed into a Usermaven event before continuing.
Step 3: Review the dry run
Before anything is imported, Usermaven checks the entire file and shows you the outcome:
Will import: valid rows, ready to go
Invalid: rows with problems (bad email, unparseable date), with reasons
Filtered: rows excluded by your filters
Duplicates: rows that share the same External ID, duplicate identical rows, or records that have already been imported.
Nothing counts until you've seen this summary. If there are invalid rows, you can download the details, fix them in your spreadsheet, and re-upload, the deal_id guarantees the already-valid rows won't import twice.
Happy with the numbers? Click Import N valid rows.
Once the Dry Run begins, the current field mapping is saved as the first revision and is used to validate the file.
If you don't map an External ID, Usermaven will ask you to confirm that you understand the import has weaker deduplication before allowing the import to continue.
Step 4: Watch it land
Large files process in resumable chunks, follow along in the CSV imports tab, where you'll see rows imported, skipped, and failed, plus a downloadable error report.
Then open Events activity, filter by this source, and spot-check a few sales: right person, right amount, right date.
If offline sales are a key outcome for your business (they usually are), pin offline_sale as a conversion goal so it appears in attribution and goal reporting alongside your online conversions.
Importing again next week safely
This becomes a routine: export closed deals, upload, dry run, import. Two habits make it bulletproof:
Keep the same
deal_idfor the same sale, even in corrected or re-exported files. Usermaven recognizes it and counts the sale once, no matter how many files it appears in.Overlapping files are fine, exporting "all deals this month" every week works, because the duplicates are caught in the dry run.
If you skip the External ID, Usermaven will ask you to explicitly confirm that you accept weaker duplicate protection, re-uploading overlapping rows without one can double count.
Related guides
Import conversions from a CSV, the full CSV reference
Send events to Usermaven with Zapier, to automate this from your CRM instead
Was this article helpful?