Feedback Survey Cookbook
A step-by-step guide to running a complete feedback survey program using the ActionXM CLI — from importing contacts to analyzing results.
Scenario
You want to collect feedback from 50 participants after a training session. The requirements:
- 3 open-text questions
- Survey styled to match your corporate brand
- Unique links per person (no email — you'll distribute links yourself)
- Export results to Excel for stakeholders
- AI-powered theme analysis of responses
Prerequisites
- ActionXM CLI installed (
npm install -g actionxm) - Authenticated (
actionxm auth login) - A project set up in ActionXM
Step 1: Create a Data Source
Create a CSV data source to import your participants:
actionxm data-sources create \
--name "Training Participants" \
--type csv_upload \
--project-id <your-project-id>✓ Data source created: Training Participants
ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Type: csv_uploadSave the data source ID from the output.
Step 2: Import Participants
Prepare a CSV file (participants.csv) with your contacts:
name,email,title
Alice Johnson,alice@example.com,Engineering Lead
Bob Smith,bob@example.com,Product Manager
Carol Davis,carol@example.com,DesignerImport via the CLI:
actionxm data-sources import-profiles participants.csv \
--source-id a1b2c3d4-e5f6-7890-abcd-ef1234567890✓ Import complete.
Total: 50
Published: 50
Errors: 0Step 3: Create Questions File
Create a questions.json file with your survey questions:
[
{
"id": "q1",
"type": "open_text",
"text": "What did you find most useful about the training?",
"required": true,
"order": 1,
"config": {}
},
{
"id": "q2",
"type": "open_text",
"text": "In what format would you like to continue learning?",
"required": true,
"order": 2,
"config": {}
},
{
"id": "q3",
"type": "open_text",
"text": "What could be improved for next time?",
"required": true,
"order": 3,
"config": {}
}
]Step 4: Create the Survey
Create the survey with auto-detected brand colors and no ActionXM branding:
actionxm surveys create \
--name "Training Feedback Q1" \
--type custom \
--questions questions.json \
--theme-from-url https://www.your-company.com \
--no-powered-byTheme detected:
Colors: #2d6a4f, #40916c
Fonts: Montserrat
✓ Survey created: Training Feedback Q1
ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Status: draft
Type: customSave the survey ID — you'll need it in the next steps.
Step 5: Preview with a Test Link
Generate a test link to see exactly what participants will see:
actionxm surveys test a1b2c3d4-e5f6-7890-abcd-ef1234567890✓ Test link generated:
https://app.action-xm.com/s/test_abc123def456...
Open this URL to preview and submit the survey as a test.Open the URL, verify the branding looks correct, and submit a test response. Test responses are excluded from analytics.
Step 6: Publish the Survey
Once you're satisfied with the preview:
actionxm surveys publish a1b2c3d4-e5f6-7890-abcd-ef1234567890✓ Survey published and active.Step 7: Create a Campaign
actionxm campaigns create \
--name "Training Feedback Outreach" \
--survey-id a1b2c3d4-e5f6-7890-abcd-ef1234567890✓ Campaign created: Training Feedback Outreach
ID: f1e2d3c4-b5a6-7890-cdef-123456789012
Status: activeStep 8: Generate Unique Links
Generate a unique survey link for each imported participant:
actionxm campaigns generate-links f1e2d3c4-b5a6-7890-cdef-123456789012✓ Generated 50 unique links.
Name Email Survey URL
Alice Johnson alice@example.com https://app.action-xm.com/s/abc123...
Bob Smith bob@example.com https://app.action-xm.com/s/def456...
Carol Davis carol@example.com https://app.action-xm.com/s/ghi789...
... and 47 moreStep 9: Export Links as XLSX
Download all links to share via email, Slack, or any channel:
actionxm campaigns export-links f1e2d3c4-b5a6-7890-cdef-123456789012 \
--output survey-links.xlsx✓ Saved to survey-links.xlsxOpen survey-links.xlsx in Excel — each row has Name, Email, and a unique Survey URL. Share the links with your participants however you prefer.
Step 10: Export Responses
After participants have responded, export the raw data:
actionxm campaigns export-responses f1e2d3c4-b5a6-7890-cdef-123456789012 \
--output responses.xlsx✓ Saved to responses.xlsxThe XLSX file has one row per respondent with columns: Name, Email, Submitted At, and one column per question.
Step 11: AI Analysis
Run AI-powered analysis to surface themes and recommendations:
actionxm campaigns analyze f1e2d3c4-b5a6-7890-cdef-123456789012Analysis: Training Feedback Q1
50 responses analyzed using claude-sonnet-4-6
Q: What did you find most useful about the training?
50 responses
● Hands-on exercises (18)
● Real-world examples (14)
● Group discussions (10)
● Reference materials provided (5)
● Presenter knowledge (3)
Sentiment: +42 ~5 -3
Overall Sentiment
Positive: 78% Neutral: 12% Negative: 10%
Key Insights
• Hands-on practice is the most valued aspect of the training
• Participants want more real-world, applicable examples
Recommendations
• Increase hands-on practice time to 40% of each session
• Create a post-training resource hub with templates
• Offer an advanced follow-up session for interested participantsCommand Reference
| Step | Command | Description |
|---|---|---|
| 1 | data-sources create | Create a CSV data source for import |
| 2 | data-sources import-profiles | Import participant profiles from CSV |
| 4 | surveys create | Create survey with questions, auto-theme, and branding options |
| 5 | surveys test | Generate a test link for preview |
| 6 | surveys publish | Activate the survey |
| 7 | campaigns create | Create a distribution campaign |
| 8 | campaigns generate-links | Generate unique per-user links |
| 9 | campaigns export-links | Download links as XLSX |
| 10 | campaigns export-responses | Download responses as XLSX |
| 11 | campaigns analyze | AI-powered response analysis |
Tips
- Test first: Always use
surveys testbefore publishing to verify the survey looks right. - Theme detection: The
--theme-from-urlflag works with any public website — it doesn't need to be a project in ActionXM. - No branding: Use
--no-powered-byto remove the ActionXM footer for a white-label look. - Unique links: Each generated link is tied to a specific person, so you know who said what.
- Re-run safe:
generate-linksskips participants who already received a link. - AI analysis: Works best with 20+ responses. Supports up to 500 open-text responses per analysis.
- Column mapping: Use
--email-colif your CSV uses a different column name (e.g.,user_emailinstead ofemail). - Conflict resolution: Use
--conflict mergeto update existing profiles without overwriting traits.