Portal Community
Note on automatic review: Templates created via template/create are automatically submitted for review and do not require a separate call to this node. Use this node specifically for templates that are in DRAFT, PAUSED, or REJECTED status and need to be re-submitted.

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredPermanent System User access token with whatsapp_business_management permission. Store in BizFirst Credentials Manager.
phoneNumberIdRequiredWhatsApp Business phone number ID associated with the account owning the template.
apiVersionOptionalMeta Graph API version, e.g. v18.0. Defaults to v18.0.

Operation

FieldRequiredDescription
templateIdRequiredThe ID of the template to submit for review. The template must be in a state that allows re-submission (DRAFT, PAUSED, or REJECTED after an update).
Implementation note: This node triggers Meta's review pipeline by making a POST request to the template endpoint. The exact API call may behave as a no-op for templates already in PENDING or APPROVED status — verify the current status with template/get before calling this node.

Sample Configuration

{
  "resource": "template",
  "operation": "submitForReview",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "templateId": "987654321098765"
}

Validation Errors

ErrorCause
accessToken is requiredThe accessToken field is empty or missing.
phoneNumberId is requiredThe phoneNumberId field is empty or missing.
templateId is requiredThe templateId field is empty or missing.
100 (Meta)Template ID not found or does not belong to the calling account.
190 (Meta)Access token expired or invalid.
200 (Meta)Token lacks whatsapp_business_management scope.
132022 (Meta)Template cannot be submitted in its current state.

Output

Success Port

Fires when Meta accepts the re-submission. The template is now in PENDING status. Use template/get to poll for the final approval decision.

FieldTypeDescription
idstringThe template ID that was submitted.
templateStatusstringStatus after submission — typically null (implicitly PENDING).
statusstring"created" or "updated" (the operation code returned by Meta's POST endpoint).
errorCodestringEmpty on success.
errorMessagestringEmpty on success.
rawResponsestringFull raw JSON response from Meta.

Error Port

FieldTypeDescription
statusstring"failed" or "error".
errorCodestringMeta error code or BizFirst internal code.
errorMessagestringHuman-readable description of the failure.
rawResponsestringRaw API error JSON for diagnostics.

Sample Output

{
  "id": "987654321098765",
  "templateStatus": null,
  "status": "created",
  "errorCode": null,
  "errorMessage": null,
  "rawResponse": "{\"id\":\"987654321098765\",\"status\":\"PENDING\"}"
}

Expression Reference

ValueExpressionNotes
Template ID{{ $output.submitTemplate.id }}Pass to template/get to poll for approval status.
Operation status{{ $output.submitTemplate.status }}Confirms the API call succeeded. Template approval must be checked separately via template/get.
Error code{{ $output.submitTemplate.errorCode }}Non-null on error port. Code 132022 means the template state does not allow submission.
Raw response{{ $output.submitTemplate.rawResponse }}Full JSON for diagnostics and logging.

Node Policies & GuardRails

Policy AreaRecommendation
State pre-checkCall template/get before calling this node to confirm the template is in a submittable state. Calling on an already-APPROVED or PENDING template may have unintended effects.
Review timelineAfter submission, poll template/get every 4 hours until status changes. Do not assume same-day approval.
Repeated rejectionsIf a template is rejected multiple times, review Meta's content policies before re-submitting. Repeated violations may result in the business account being flagged.
Credential storageStore the access token in BizFirst Credentials Manager.
Error port handlingAlways connect the error port. Failure to submit must be detected and alerting triggered — a template stuck in REJECTED state that was supposed to be resubmitted silently breaks downstream send workflows.
Campaign planningPlan review submissions at least 72 hours before the intended campaign launch to account for Meta's review window plus contingency time for one resubmission if initially rejected.

Examples

Re-submit After Correction

// Step 1: Update the rejected template with corrected components
{
  "resource": "template",
  "operation": "update",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "templateId": "987654321098765",
  "components": "{{ $input.correctedComponentsJson }}"
}

// Step 2: Submit for review (chained after update success)
{
  "resource": "template",
  "operation": "submitForReview",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "templateId": "987654321098765"
}

A template remediation workflow first applies the content correction via template/update, then immediately chains to this node to trigger the re-submission. After this node succeeds, a scheduled poll loop monitors template/get every 4 hours until the template reaches APPROVED or REJECTED status.

Batch Re-submission After Policy Change

// Loop node iterates over list of rejected template IDs
{
  "resource": "template",
  "operation": "submitForReview",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "templateId": "{{ $loop.currentItem.id }}"
}

After a Meta policy change caused bulk rejections, a compliance team prepares corrected component JSON for each affected template. A workflow loops through the list — first calling template/update for each, then this node to re-submit. Results are collected into a resubmission report sent to the communications team.

Draft Promotion Pipeline

{
  "resource": "template",
  "operation": "submitForReview",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "templateId": "{{ $input.draftTemplateId }}"
}

An internal approval gate workflow presents the template definition to a human approver. On approval, the workflow calls this node to formally submit to Meta. A Slack notification is sent to the campaign manager confirming submission with the expected approval date range (24–48 hours from submission timestamp).