For the complete documentation index, see llms.txt
Saltar al contenido principal

Message templates and delivery rules

Use these settings when an integration editor offers Message recipe, Delivery rules (JSON), or Custom fields (JSON). The preview shows the rendered result before you save.

Template variables​

Insert a value with {{ variable }}. Use the editor's variable buttons when available.

VariableValue
feedback.messageWritten feedback, or empty for rating-only entries
feedback.ratingNormalized rating: 0 to 5, or -1 for no rating
feedback.rating_normalizedAlias of feedback.rating
feedback.rating_labelHuman-readable rating
feedback.sentimentpositive, negative, or neutral
feedback.emailVisitor email, if supplied
feedback.urlPage URL
feedback.created_atSubmission timestamp
feedback.has_screenshotWhether the entry includes a screenshot
feedback.detail_urlLink to the feedback entry in PushFeedback
project.nameProject display name
project.urlProject website URL
project.slugProject ID

For thumbs ratings, feedback.rating is 0 for negative and 5 for positive. Use feedback.rating_label when the destination needs readable text.

Example title:

Feedback on {{ project.name }}: {{ feedback.rating_label }}

Example body:

{{ feedback.message | default:"No written message" | truncate:1000 }}

Page: {{ feedback.url }}
View feedback: {{ feedback.detail_url }}

Only default and truncate filters are supported. default replaces an empty value. truncate limits text to the given length. Loops, conditionals, and other template syntax are not supported. Unknown variables or invalid syntax prevent saving.

Delivery rules​

Use a JSON object to select which feedback the integration receives. {} allows all feedback that passes Enabled and Require a message.

This rule sends negative feedback that includes a message:

{
"all": [
{ "field": "feedback.sentiment", "operator": "eq", "value": "negative" },
{ "field": "feedback.message", "operator": "not_empty" }
]
}

Use all when every condition must match and any when one match is enough. Groups can be nested. Fields use the variable names above without {{ }}.

OperatorMatch
eqEquals value
neDoes not equal value
lteLess than or equal to value
gteGreater than or equal to value
containsContains value
starts_withStarts with value
not_emptyHas a value. Omit the value key.

Use JSON values of the correct type, such as true for feedback.has_screenshot and a number for feedback.rating. Rules support at most 10 levels and 100 nodes.

Custom fields​

Where supported, map field names to JSON values. String values can contain template variables:

{
"priority": "{{ feedback.sentiment }}",
"source_page": "{{ feedback.url }}"
}

This example fits a webhook's custom fields. Other destinations accept their own fields, such as labels, assignees, or board columns. Check the integration's controls and the API schemas before reusing a mapping for another provider.

Verify a recipe​

Review the preview, save the integration, and submit feedback that matches the rules. Check the destination. If nothing arrives, use delivery troubleshooting.