Skip to content

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:

bash
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_upload

Save the data source ID from the output.

Step 2: Import Participants

Prepare a CSV file (participants.csv) with your contacts:

csv
name,email,title
Alice Johnson,alice@example.com,Engineering Lead
Bob Smith,bob@example.com,Product Manager
Carol Davis,carol@example.com,Designer

Import via the CLI:

bash
actionxm data-sources import-profiles participants.csv \
  --source-id a1b2c3d4-e5f6-7890-abcd-ef1234567890
✓ Import complete.
  Total:     50
  Published: 50
  Errors:    0

Step 3: Create Questions File

Create a questions.json file with your survey questions:

json
[
  {
    "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:

bash
actionxm surveys create \
  --name "Training Feedback Q1" \
  --type custom \
  --questions questions.json \
  --theme-from-url https://www.your-company.com \
  --no-powered-by
Theme detected:
  Colors: #2d6a4f, #40916c
  Fonts:  Montserrat

✓ Survey created: Training Feedback Q1
  ID:     a1b2c3d4-e5f6-7890-abcd-ef1234567890
  Status: draft
  Type:   custom

Save the survey ID — you'll need it in the next steps.

Generate a test link to see exactly what participants will see:

bash
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:

bash
actionxm surveys publish a1b2c3d4-e5f6-7890-abcd-ef1234567890
✓ Survey published and active.

Step 7: Create a Campaign

bash
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: active

Generate a unique survey link for each imported participant:

bash
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 more

Download all links to share via email, Slack, or any channel:

bash
actionxm campaigns export-links f1e2d3c4-b5a6-7890-cdef-123456789012 \
  --output survey-links.xlsx
✓ Saved to survey-links.xlsx

Open 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:

bash
actionxm campaigns export-responses f1e2d3c4-b5a6-7890-cdef-123456789012 \
  --output responses.xlsx
✓ Saved to responses.xlsx

The 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:

bash
actionxm campaigns analyze f1e2d3c4-b5a6-7890-cdef-123456789012
Analysis: 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 participants

Command Reference

StepCommandDescription
1data-sources createCreate a CSV data source for import
2data-sources import-profilesImport participant profiles from CSV
4surveys createCreate survey with questions, auto-theme, and branding options
5surveys testGenerate a test link for preview
6surveys publishActivate the survey
7campaigns createCreate a distribution campaign
8campaigns generate-linksGenerate unique per-user links
9campaigns export-linksDownload links as XLSX
10campaigns export-responsesDownload responses as XLSX
11campaigns analyzeAI-powered response analysis

Tips

  • Test first: Always use surveys test before publishing to verify the survey looks right.
  • Theme detection: The --theme-from-url flag works with any public website — it doesn't need to be a project in ActionXM.
  • No branding: Use --no-powered-by to 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-links skips 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-col if your CSV uses a different column name (e.g., user_email instead of email).
  • Conflict resolution: Use --conflict merge to update existing profiles without overwriting traits.

ActionXM Analytics Platform