export-debugger
Export Debugger
Purpose
Diagnoses why a specific user was or wasn't exported to an external platform. Traces through the full export pipeline: segment membership -> job status -> flow state -> quiet windows -> export logs. Read-only diagnostic.
Environment
Requires authenticated API access. See ../references/auth.md for credential resolution.
Inputs
- User identity (field + value, e.g.,
email user@example.com) - Export destination: job ID, job name, platform name, or flow name
- Table (default:
user)
Diagnostic Flow
Step 1: Identify the Export Job
If the user provides a job ID, fetch it directly. Otherwise, find the relevant job:
# List all jobs to find the export
curl -s "${LYTICS_API_URL:-https://api.lytics.io}/v2/job" \
-H "Authorization: ${LYTICS_API_TOKEN}"
Match by name, workflow type, or platform. Extract the segment_id from the job's config field -- this is the segment the job exports from.
If the user mentions a flow, fetch it and trace to the export step:
curl -s "${LYTICS_API_URL:-https://api.lytics.io}/v2/flow/ui/${FLOW_ID}" \
-H "Authorization: ${LYTICS_API_TOKEN}"
Find steps with type_hint: "work_export" and get their work_id to identify the export job.
Step 2: Check User's Segment Membership
curl -s "${LYTICS_API_URL:-https://api.lytics.io}/api/entity/user/${FIELD}/${VALUE}?segments=true&allsegments=true" \
-H "Authorization: ${LYTICS_API_TOKEN}"
Check: Is the user in the export job's target segment?
- YES -> proceed to Step 3 (job should be exporting them)
- NO -> this is likely the reason. Use
profile-investigator skillto explain why they're not in the segment.
Step 3: Check Job Status
curl -s "${LYTICS_API_URL:-https://api.lytics.io}/v2/job/${JOB_ID}" \
-H "Authorization: ${LYTICS_API_TOKEN}"
| Status | Diagnosis |
|---|---|
runnable |
Job is active -- check logs for export details |
sleeping |
Job is between runs. Check sleep_until -- may be in quiet window or scheduled delay |
paused |
Job is paused. User or system paused it -- exports are halted |
fault |
Job has errors. Check logs for the error details |
failed |
Job has terminally failed. Check logs for root cause |
killed |
Job was manually stopped |
Step 4: Check Quiet Window
If the job has quiet window settings, calculate whether it's currently active:
From the job response, check these fields:
quiet_time_of_day-- e.g., "2:00pm"quiet_timezone-- e.g., "America/Los_Angeles"quiet_period-- hours of quiet, e.g., 4
If all three are set, calculate:
Quiet window: quiet_time_of_day to (quiet_time_of_day + quiet_period hours)
in the configured timezone
Example: 2:00pm - 6:00pm America/Los_Angeles
If the current time falls within the quiet window, the job is sleeping and won't export until the window ends. Check sleep_until in the job response to confirm.
If drop_events_during_quiet_window is true, events arriving during quiet time are permanently dropped, not queued.
Step 5: Check Flow State (if flow-based export)
If the export is triggered through a flow, check which step the user is at:
The entity response from Step 2 includes flows_step_slugs:
{
"flows_step_slugs": {
"flow_id-1": "welcome_email_step"
}
}
Cross-reference with the flow's step list to determine:
- Has the user reached the export step yet? (may still be in a delay or earlier step)
- Did the user exit the flow before reaching the export?
- Is the user in a conditional branch that doesn't lead to the export?
Step 6: Check Job Logs
Always use include_errors=true when debugging to get full error details:
curl -s "${LYTICS_API_URL:-https://api.lytics.io}/v2/job/${JOB_ID}/logs?include_errors=true" \
-H "Authorization: ${LYTICS_API_TOKEN}"
Look for:
- Export counts:
added,omitted,removedin the log context - Errors: Rate limits, auth failures, API errors from the destination platform
- Timestamps: When the job last ran successfully
- User-level errors: Some platforms report per-user failures (e.g., invalid email format)
Output Format
## Export Debug Report
### User: user@example.com
### Destination: Facebook Custom Audiences (job: "fb_export_high_value")
### Diagnostic Results
1. SEGMENT MEMBERSHIP: PASS
User IS in segment "High Value Customers" (id: seg123)
2. JOB STATUS: PASS
Job is "runnable" -- actively processing
3. QUIET WINDOW: FAIL
Job is currently in quiet window (2:00pm - 6:00pm PT)
Will resume at: 6:00pm PT (2026-03-19T01:00:00Z)
drop_events_during_quiet_window: false (events are queued)
4. FLOW STATE: N/A
Export is not flow-based
5. JOB LOGS: INFO
Last export: 2026-03-19 09:45:00 UTC
Added: 145, Omitted: 3, Removed: 12
No errors in recent logs
### Diagnosis
The user IS in the export segment and the job is active, but the job
is currently in its quiet window (2:00pm-6:00pm PT). The user should
be exported when the job resumes at 6:00pm PT. Events are being
queued, not dropped.
Common Diagnoses
| Symptom | Likely Cause | Resolution |
|---|---|---|
| User not in segment | FilterQL conditions not met | Use profile-investigator to see which conditions fail |
| Job paused | Manually paused or auto-paused | Resume the job |
| Job faulted | Auth expired, rate limit, API error | Check logs, fix auth or wait for rate limit reset |
| Job sleeping | Quiet window or scheduled delay | Wait for quiet window to end |
| User in wrong flow step | Delay step or conditional branch | Check flow structure and timing |
| User exported but not appearing | Platform sync delay | Check platform-side, may take minutes to hours |
| "Omitted" in logs | User was filtered by export config | Check job config for additional filters beyond segment |
Error Handling
- Job not found: List jobs and help user identify the right one
- User not found: Try alternative identity fields
- Multiple export jobs for same platform: Show all, ask user to pick
- No logs available: Job may be new or logs may have aged out
Dependencies
- Composes:
job-manager skill,entity-lookup skill,segment-manager skill,flow-manager skill - Related:
profile-investigator skill(for segment membership diagnosis) - References:
../references/auth.md,../references/api-client.md
More from lytics/agent-skills
entity-lookup
Look up user profiles by identity field and value. Use when the user wants to find or look up a specific user profile by email, user ID, or other identity field.
28audience-advisor
Strategic audience guidance -- helps users build the right audience for their business goal or improve an existing segment. Use when the user needs help choosing the right audience strategy, wants advice on segment design, or needs to improve an existing segment.
28integration-setup
Guided setup for data integrations -- connection, auth, and job creation. Use when the user wants to set up, configure, or connect a new data integration end-to-end.
28audience-snapshot
Analyze what an audience looks like -- demographic breakdowns, top field values, coverage rates, and distributions. Use when the user wants to understand audience composition, view segment demographics, or analyze field coverage for a segment.
28data-health-monitor
Single-command data health check -- streams, jobs, schema, and quota status in one report. Use when the user wants to check data health, view system status, or get an overview of streams, jobs, and schema health.
28schema-manager
Browse and modify schema fields, mappings, identity config, and field rankings. Use when the user wants to list, view, create, or modify schema fields, mappings, identity configuration, or field rankings.
27