Potential opportunity: reusable reporting views for operations teams.
Team workflows / BLOCK KIT JSON
Share a customer insight with the original quote, product area, and research context.
Blank optional fields are omitted. Fallback text updates with your fields.
Approximate Slack rendering. Buttons are visual previews; no actions are sent.
Local validation checks the supported schema. It does not guarantee Slack API acceptance.
Manual editing and validation run in your browser. Opening Slack’s Builder shares the message with Slack.
Customer insight · Reporting I want to save my export filters so I don’t have to rebuild the same report every Monday. Potential opportunity: reusable reporting views for operations teams. Customer: Fieldwork Studio Segment: Team plan · 12 seats Product area: Reporting and exports Source: Customer interview · 20 Oct One customer observation · Validate with additional research Read source: https://example.com/feedback/FB-392
Download the payload or use this command in your own terminal. Replace the placeholder URL with your Slack incoming webhook. Keep the real URL secret. This tool never sends a Slack message.
curl --request POST \
--header 'Content-Type: application/json' \
--data-binary @- \
'https://hooks.slack.com/services/YOUR/WEBHOOK/URL' <<'SLACK_MESSAGE_JSON'
{
"text": "Customer insight · Reporting\nI want to save my export filters so I don’t have to rebuild the same report every Monday.\n\nPotential opportunity: reusable reporting views for operations teams.\nCustomer: Fieldwork Studio\nSegment: Team plan · 12 seats\nProduct area: Reporting and exports\nSource: Customer interview · 20 Oct\nOne customer observation · Validate with additional research\nRead source: https://example.com/feedback/FB-392",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Customer insight · Reporting"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "> I want to save my export filters so I don’t have to rebuild the same report every Monday.\n\nPotential opportunity: reusable reporting views for operations teams."
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Customer*\nFieldwork Studio"
},
{
"type": "mrkdwn",
"text": "*Segment*\nTeam plan · 12 seats"
},
{
"type": "mrkdwn",
"text": "*Product area*\nReporting and exports"
},
{
"type": "mrkdwn",
"text": "*Source*\nCustomer interview · 20 Oct"
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "One customer observation · Validate with additional research"
}
]
},
{
"type": "divider"
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "Read source"
},
"action_id": "feedback",
"url": "https://example.com/feedback/FB-392"
}
]
}
]
}
SLACK_MESSAGE_JSONBring a useful customer observation into a product discussion. Keeping the quote distinct from your interpretation prevents a single anecdote from being presented as a validated product requirement.
Use a short, permission-appropriate quote and link to the original source. Record the segment and product area to help with synthesis. Avoid presenting one customer’s experience as a trend without supporting evidence.
Send from your feedback or research intake process. The source button opens the original record; votes, roadmap prioritization, and follow-up outreach need separate application logic.
To post this JSON, create a Slack app with an incoming webhook for your channel, or use chat.postMessage with the appropriate bot token and permissions. Keep credentials on your server.
For buttons, enable Interactivity and handle Slack’s interaction requests, including URL buttons. Acknowledge requests promptly. This preview does not execute actions, authorize users, or save decisions.
Use the top-level fallback text for notifications and accessibility. Test your final payload in Slack; local validation covers the declared subset, and visual details vary by client.
Slack interaction setup ↗