Task Creation in Sparrow Intel

Written By Chad McGuire (Sparrow Intel)

This guide covers how Sparrow Intel creates tasks in external task management systems β€” both manually from the UI and automatically through rules. It details what data gets populated in each integration, how cleaning and maintenance issues receive special handling, and the differences between each supported platform.


Two Paths to Task Creation

1. Manual Task Creation (from the UI)

Users can manually create a task from a review or conversation by clicking "Create Task" in the review detail view. This opens a form (CreateTaskActionForm) with the following fields:

  • Task Source β€” Which integration to create the task in (dropdown of connected integrations)

  • Department β€” Cleaning, Maintenance, or Inspection (radio buttons)

  • Title β€” Free-text title for the task

  • Description β€” Free-text multi-line description

  • Assignee β€” User from the selected integration (autocomplete, optional)

  • Project β€” Only shown when Asana is selected (required for Asana)

  • Scheduled At β€” Optional date/time picker

  • Task Template β€” Only shown when the integration supports templates (e.g., Breezeway)

  • Tags β€” Only shown when the integration supports tags (e.g., Breezeway), multi-select

The user has full control over all fields. The form dynamically shows/hides fields based on which integration is selected and what that integration supports.

2. Automatic Task Creation (via Rules)

Rules trigger task creation automatically when conditions are met (e.g., "When a review has maintenance issues AND property is in group X, create a Breezeway task"). The rule engine constructs task parameters based on the rule configuration:

  • Title β€” Auto-generated based on the rule and its conditions

  • Description β€” Auto-generated with a summary of all matched conditions

  • Checklist β€” Auto-generated from detected issues (cleaning/maintenance)

  • Assignee β€” Configured on the rule action

  • Department β€” Auto-set based on the type of issues detected

  • Template, Tags, Project β€” Configured on the rule action (for integrations that support them)


Cleaning & Maintenance Issues: Special Handling

This is the most important behavioral difference in Sparrow's task creation logic. When a rule includes a Maintenance Issues or Cleaning Issues condition, Sparrow creates tasks differently than it does for other condition types.

Standard Task Creation (non-issue conditions)

For rules that don't involve cleaning or maintenance issues (e.g., "When overall rating is less than 3"), Sparrow creates one task per rule trigger with:

  • Title: "{Rule Title} (from Sparrow)"

  • Description: A formatted summary of all conditions and their values

  • Checklist: Empty (no checklist items)

  • Department: Not set (null)

Issue-Based Task Creation (cleaning or maintenance conditions)

When a rule includes a cleaning or maintenance issues condition, Sparrow creates one task per individual issue. For example, if a review mentions 3 maintenance issues ("broken faucet", "cracked window", "loose door handle"), Sparrow creates 3 separate tasks.

Each per-issue task gets:

  • Title:

    • Single-condition rule: "{issue} (from Sparrow)" β€” e.g., "Broken faucet in bathroom (from Sparrow)"

    • Multi-condition rule: "{issue} (from Sparrow: {Rule Title})" β€” e.g., "Broken faucet in bathroom (from Sparrow: Beachfront Maintenance)"

  • Description: "{condition description}: {issue}" β€” e.g., "Has Maintenance Issues: Broken faucet in bathroom"

  • Checklist: Contains the single issue as a checklist item

  • Department: Automatically set to Maintenance for maintenance issues, Cleaning for cleaning issues

Why this matters

The per-issue enumeration ensures that:

  1. Each issue becomes an actionable, trackable task in the external system rather than being buried in a single generic task

  2. Assignees see specific work β€” "Fix broken faucet" is far more useful than "Maintenance issues detected"

  3. Both issue types can fire on the same rule β€” If a rule has both cleaning and maintenance conditions, both sets of issues get enumerated into separate tasks with the correct departments

  4. Multi-condition rules still work β€” A rule like "Property Group = Beachfront AND Has Maintenance Issues" will still enumerate individual issues. The title includes the rule name for context.


Integration-by-Integration Guide

Breezeway

Breezeway is the most feature-rich task integration, supporting templates, tags, departments, and scheduled dates.

What gets populated:

Sparrow Field

Breezeway API Field

Details

Title

name

The task name shown in Breezeway

Description

description

Full task description

Assignee

assignments

Array of user IDs (Breezeway uses integer IDs)

Department

type_department

See department mapping below

Scheduled At

scheduled_date + scheduled_time

Split into separate date (YYYY-MM-DD) and time (HH:mm:ss) fields

Template

template_id

Integer ID of a Breezeway task template

Tags

tags

Array of integer tag IDs

What is NOT populated:

  • Checklist items are not sent to Breezeway (the API field is not used)

If no department is specified, defaults to Inspection.

Task templates: Breezeway supports task templates which pre-fill certain fields. When creating a rule with Breezeway as the target, users can select a template. Templates are fetched from Breezeway and filtered by department.

Tags: Breezeway supports task tags for categorization. Users can select multiple tags when creating a rule or manual task.


Guesty

Guesty supports the core task fields plus native checklists and scheduling.

What gets populated:

Sparrow Field

Guesty API Field

Details

Title

title

The task title

Description

description

Task description

Checklist

checklist

Native checklist array β€” each issue becomes a checklist item

Assignee

assigneeId

Guesty user ID string

Department

type

See department mapping below

Scheduled At

canStartAfter

ISO 8601 datetime

What is NOT populated:

  • Priority is hardcoded to "medium"

Department mapping:

Sparrow

Guesty

Cleaning

cleaning

Maintenance

maintenance

Inspection

inspection

Checklist behavior: Guesty natively supports checklists on tasks. When Sparrow creates a task with checklist items (e.g., from detected issues), each item appears as a checkable item in Guesty's task view.


Hostaway

Hostaway supports checklists and scheduling but does not natively support departments on task creation.

What gets populated:

Sparrow Field

Hostaway API Field

Details

Title

title

The task title

Description

description

Task description

Checklist

checklistItems

Native checklist array

Assignee

assigneeUserId

Hostaway user ID string

Scheduled At

canStartFrom

Format: YYYY-MM-DD HH:mm:ss

What is NOT populated:

  • Department β€” not sent in the create task API call. While Hostaway uses a categoriesMap internally (1=cleaning, 2=maintenance, 3=check-in, 4=check-out, 5=back office, 6=other), this is not set when creating tasks via API

Department mapping (for task retrieval only, not creation):

Sparrow

Hostaway categoriesMap

Cleaning

1

Maintenance

2

Inspection

6 (mapped to "other")


Track

Track routes to completely different API endpoints based on the department. There is no single "create task" endpoint β€” the department determines which Track subsystem receives the task.

Department-based routing:

Cleaning Department β†’ Housekeeping Work Order

Sparrow Field

Track API Field

Details

Title

(not used)

Title is not sent for housekeeping work orders

Description

comments

Mapped to the comments field

Assignee

userId

Integer user ID

Scheduled At

(hardcoded to today)

Uses DateTime.UtcNow

Additional: Track creates/fetches a "SPARROW" clean type (cleanTypeId) for these work orders.

Maintenance Department β†’ Maintenance Work Order

Sparrow Field

Track API Field

Details

Title

summary

Mapped to the summary field

Description

description

Task description

Assignee

userId

Integer user ID

Scheduled At

dateScheduled

Format: YYYY-MM-DD

Additional: dateReceived is hardcoded to today, estimatedTime to 60 minutes, estimatedCost to 0.

Inspection or Default β†’ CRM Task

Sparrow Field

Track API Field

Details

Title

title

Task title

Description

description

Task description

Assignee

userId

Integer user ID

Scheduled At

(not supported)

Not available for CRM tasks

Additional: priority is hardcoded to 3.

What is NOT populated (all Track types):

  • Checklists (not supported by any Track endpoint)

Key takeaway for Track: The department field is critical for Track because it determines not just a label but which entirely different system (housekeeping vs. maintenance vs. CRM) receives the task. This is why the special handling for cleaning/maintenance issues matters β€” it ensures the correct department is set and the task lands in the right Track subsystem.


Asana

Asana requires a project for every task and puts most detail into a single notes field since Asana's task model is simpler.

What gets populated:

Sparrow Field

Asana API Field

Details

Title

name

The task name

Description

notes (part of)

Appended to the notes field

Checklist

notes (part of)

Each item added as a bullet point in notes

Assignee

assignee

Asana user GID (optional)

Department

notes (part of)

Appended as text in the notes field

Scheduled At

due_at

ISO 8601 datetime with timezone

Project

projects

Required β€” array with the Asana project GID

How the notes field is constructed:

Asana doesn't have separate fields for description, department, and checklist like some other integrations. Instead, Sparrow concatenates all information into the notes field in this order:

  1. Description text

  2. Reservation ID (if available)

  3. Department label

  4. Checklist items (as a bulleted list)

Project requirement: Unlike other integrations, Asana requires a project to be specified. When creating a rule with Asana as the target, users must select which Asana project tasks should be created in. This project selector appears as the secondary input on the rule action and as a required field on the manual task creation form.


Webhook

The webhook integration sends a JSON payload to a user-specified URL. It does not create tasks in any specific system β€” instead, it provides all the data needed for the receiving system to create tasks however it sees fit.

Payload structure:

{ "event": "rule.triggered", "ruleId": "guid", "ruleTitle": "Rule name", "propertyManagerId": "guid", "companyName": "Company name", "targetType": "Review | ReviewPrediction | VoiceConversation | ConversationPost", "targetId": "guid", "task": { "title": "Task title", "description": "Task description", "checklist": ["item1", "item2"], "department": "Cleaning | Maintenance | Inspection" }, "review": { ... }, "reviewPrediction": { ... }, "voiceConversation": { ... }, "conversationPost": { ... } } 

Only the relevant target field is populated (e.g., if the trigger was a review, only review contains data).

What gets populated in task:

Sparrow Field

Webhook Payload Field

Details

Title

task.title

The generated task title

Description

task.description

The generated task description

Checklist

task.checklist

Array of checklist item strings

Department

task.department

String: "Cleaning", "Maintenance", or "Inspection"

Assignee

(not included)

No assignee in webhook payloads

Key differences from other integrations:

  • Sends the full context of the triggering entity (entire review, voice conversation, etc.)

  • No assignee field β€” the receiving system handles assignment

  • No scheduling

  • The URL is specified per-rule as the action data

  • Multiple tasks (e.g., from enumerated cleaning issues) result in multiple webhook calls