TL;DR
Assigning contacts to an active campaign moves selected records into the campaign's member queue, where they inherit its targeting rules, schedule, and analytics tags. The feature validates each contact against campaign eligibility rules, flagging ineligible records before insertion, and uses dynamically sized batches to balance speed against system load.
The assignment runs independently of the messaging delivery service, so you can add contacts while messages are already sending, and new members are picked up by the next delivery cycle within minutes. The article’s bottom line: use this tool only when the campaign is already live—if it’s still in draft, define the audience during setup instead.
The Assign contacts to a campaign capability moves selected contact records into a campaign that is currently marked as active within the platform. When the operation completes, each contact inherits the campaign’s targeting rules, messaging schedule, and analytics tags, allowing them to receive the next scheduled touchpoint without manual re‑entry.
In practice, the feature works as a bulk‑assignment tool: you provide a list of contact identifiers (email addresses, phone numbers, or internal IDs) and the system validates each record against the campaign’s eligibility criteria before adding them to the campaign’s member queue.
When to use it
| Situation | Why the capability helps |
|---|---|
| Launching a new wave of an existing nurture flow | You can instantly add fresh leads that have just met a scoring threshold, keeping the cadence uninterrupted. |
| Recovering from a data import error | If a batch of contacts was mistakenly left out of a campaign, you can re‑assign them without rebuilding the entire workflow. |
| Segment‑based testing | When you want to test a variant message on a subset of an active audience, you assign only those contacts to the test campaign. |
| Compliance‑driven re‑opt‑in | After a consent refresh, you can move re‑opted contacts back into the active campaign that matches their renewed preferences. |
| Seasonal promotions | Adding a list of holiday‑shoppers to an already‑running holiday campaign avoids duplicating effort. |
The feature is most valuable when the campaign is already live and you need to add contacts quickly without pausing the existing schedule. If the campaign is still in draft mode, it is usually clearer to define the audience during setup rather than using the post‑hoc assign tool.
Where does it run
Direct answer: The assignment logic executes on the platform’s campaign engine, which resides in a multi‑tenant, horizontally scaled environment. The engine reads contact data from the unified contact store, applies campaign‑specific filters, and writes the resulting membership records to the campaign membership table.
Because the operation touches only the campaign membership layer, it runs independently of the messaging delivery service. This separation means you can assign contacts while messages are being sent, and the new members will be picked up by the next delivery cycle (typically within a few minutes, depending on the campaign’s cadence).
How it works
Direct answer: Below is a walk‑through of the steps the system follows when you issue the prompt “Assign my contacts to my active campaign.”
1. Prompt parsing and intent resolution
When the natural‑language prompt arrives, the system extracts three key entities:
- The source of contacts – either a saved list, a CSV upload, or a dynamic segment query.
- The target campaign – identified by its active status flag and unique campaign ID.
- Any optional constraints – such as a maximum batch size or a specific start‑time for the assignment.
Example prompts the system is designed to interpret include “Put my new leads into the running summer promo campaign” and “Assign contacts from list 12345 to the active onboarding campaign.” When a prompt omits both a contact source and a campaign reference, the system responds with a clarification request instead of guessing.
2. Contact retrieval and validation
The system pulls the contact identifiers from the indicated source. For each identifier it:
- Checks existence in the master contact store.
- Verifies that the contact is not already a member of the target campaign (to avoid duplicates).
- Applies the campaign’s eligibility rules (e.g., consent status, geographic restrictions, score thresholds).
If a source list contains invalid emails or contacts lacking required consent, the engine flags those rows as ineligible and returns a validation report, which lets you clean the source list before retrying.
3. Batch creation and throttling
To protect system stability, the engine splits the validated contacts into batches. The batch size is dynamically calculated based on current server load, the complexity of the campaign’s segmentation rules, and the configured maximum throughput for the tenant.
Larger batches generally finish faster but consume more CPU and I/O resources, which could affect other tenants if not throttled — so the system favors smaller batches under heavier concurrent load.
4. Membership insertion
Each batch is written to the campaign membership table using an upsert operation (insert if not exists, ignore if already present). The write path includes:
- Timestamping the assignment event.
- Attaching the campaign’s current version ID (so that future changes to the campaign do not retroactively affect already‑assigned contacts).
- Emitting an event to the analytics pipeline for real‑time reporting.
The upsert‑based write path is designed to avoid write conflicts even under high concurrency.
5. Post‑assignment verification
After the final batch commits, the system runs a lightweight verification:
- Counts the total members now associated with the campaign.
- Compares it to the expected original count plus the number of successfully assigned contacts.
- Sends a summary notification (email or in‑app alert) to the user who initiated the prompt.
Verification notices are typically delivered shortly after the batch operation completes.
6. Rollback and error handling
If any batch fails validation (e.g., a sudden loss of connection to the contact store), the engine:
- Halts further batch processing.
- Rolls back the writes for the failed batch only (previous batches remain committed).
- Returns an error code and a downloadable CSV of the contacts that could not be processed.
The rollback is batch‑granular rather than all‑or‑nothing, so users can correct a problematic subset without losing the work already completed.
FAQ
Direct answer: Q: Can I assign contacts to a campaign that is paused? A: No. The capability requires the target campaign to have an active status. If the campaign is paused, you will receive an error prompting you to resume it first. This prevents contacts from entering a campaign that will not send messages until it is reactivated.
Q: What happens if a contact already belongs to the campaign? A: The system treats the contact as a duplicate and skips it. No duplicate membership records are created, and the contact’s existing assignment timestamp remains unchanged.
Q: Are there limits on how many contacts I can assign at once? A: There is no hard ceiling, but the engine enforces a dynamic maximum batch size to preserve platform stability. Very large lists are automatically chunked; you will see a progress indicator showing each batch’s status.
Q: Does assigning contacts trigger immediate message delivery? A: Assignment only adds contacts to the campaign’s member queue. Delivery follows the campaign’s predefined schedule (e.g., daily at 09:00 UTC). New contacts will be included in the next scheduled send after they are successfully assigned.
Q: How is data privacy handled during the assignment process? A: Contact data never leaves the secure environment of the platform. All reads and writes occur within the same encrypted data plane, and the operation is logged for compliance audits. No personal data is exported unless you explicitly request a downloadable error report.
Q: Can I undo an assignment if I made a mistake? A: There is no single‑click “undo” button, but you can remove contacts from a campaign using the Remove contacts from a campaign feature. Because each assignment logs a timestamp, you can target only the contacts added during the mistaken operation for removal.
Q: Are there any additional costs associated with using this feature? A: nqzai bills usage on a pay‑as‑you‑go basis at $2 per million tokens, with no subscription tiers. Costs for this capability scale with the volume and complexity of the operation rather than a flat per‑contact fee.
Takeaway
Assigning contacts to an active campaign is a reliable way to keep your marketing motions fluid when new audiences emerge or data gaps appear. The feature works entirely within the platform’s campaign engine, validates each contact against the campaign’s rules, processes them in dynamically sized batches, and provides clear verification and error reporting. It respects system load through automatic throttling, so other tenants and services remain unaffected. Use it when you need to scale an existing live campaign quickly, and always review the validation report to maintain data quality and compliance.
Evidence, limits, and reproducible use
Direct answer: Reproducible workflow. Provide the intended audience and campaign context, inspect the proposed records or draft, then explicitly approve any action that changes a campaign or sends email. Keep suppression, consent, and sender-domain decisions outside a generated draft and review them before use.
Limit. This result does not establish identity, consent, legal basis, deliverability, or a right to contact a person. A draft or campaign configuration is a review artifact, not an instruction to send.
For the currently exposed nqzai workflow and connection limits, check the public capabilities inventory before relying on a result.
Primary references
Where nqzai fits
The workflow above is one nqzai runs directly: AI GTM agents, AI marketing planner.
How we keep this honest
Every response nqzai's agent generates is automatically graded by an independent AI judge for accuracy and whether it invents information it can't back up. As of September 2026: sampled responses averaged a 82% quality score over the trailing 7 days (n=39), and our nightly regression suite — which re-runs the agent against a fixed set of real scenarios — passed at a ~93% rate over the last 14 nights. This is internal automated QA, not an independently audited or third-party benchmark; we publish it as a transparency signal, not a claim of perfection.



