Skip to main content

Overview

Spreadsheet Template Reports (STRs) are Excel-based report templates that allow you to query your Broadstripes database directly from Excel cells using special formula functions. These templates are particularly useful for labor organizing campaigns where you need to track worker engagement, analyze organizing activity, and generate custom reports. When you run an STR, the system processes your template file, executes all the database query functions, replaces them with the actual data, and generates a completed Excel report that you can download and analyze.

What you can do with STRs

STRs enable you to:
  • Count workers, organizations, or contacts matching specific criteria
  • Sum numeric values from custom fields (hours worked, dues collected, etc.)
  • Track event participation and organizing activities
  • Generate dynamic lists of names for outreach
  • Create recurring reports with different parameters
  • Build complex dashboards combining multiple data points

Where to find and create STRs

STRs are accessible in the app from the Settings menu. Click on Settings and then Spreadsheet template reports. Here you will find a list of all available STRs (if any). You can edit, delete and create new ones.

Creating and uploading templates

Step 1: Create your Excel template

  1. Open Microsoft Excel (or compatible spreadsheet software)
  2. Design your report layout with headers, labels, and formatting
  3. Add STR functions in cells where you want CRM data. You can find a list of available functions in the available query functions section of this article.
  4. Test your formulas and cell references
  5. Add parameters if needed using {parameter_name} syntax
  6. Save the file as an .xlsx file
Best Practices:
  • Use clear headers and labels
  • Add a title row explaining what the report shows
  • Format numeric cells appropriately (currency, percentage, etc.)
  • Use Excel’s formatting features (bold, colors, borders) to improve readability
  • Test cell references carefully to ensure they point to the right cells

Step 2: Upload to Broadstripes

  1. Navigate to Settings → Spreadsheet Template Reports
  2. Click Upload new report template
  3. Enter a Description that explains what the report does
    • Example: “Weekly department activity report showing worker counts and organizing metrics”
  4. Click Choose file and select your .xlsx file
  5. Click Upload
The system will validate your file and save it as a template. After uploading, you need to create at least one link that users can click to run the report:
  1. Find your uploaded template in the list
  2. Click add link
  3. Enter Link Text - this is what users will click
    • Example: “Generate Warehouse Weekly Report”
  4. (Optional) Add parameters:
    • Click add parameter
    • Enter the parameter name (e.g., department)
    • Enter the parameter value (e.g., Warehouse)
    • Click the checkmark to save
  5. Repeat for additional parameters
  6. Click outside the form to save
You can create multiple links for the same template with different parameters:
  1. Click add link again
  2. Enter different link text: “Generate Loading Dock Weekly Report”
  3. Add parameters: department=Loading Dock
  4. Save
Now users can choose which version of the report to run.

Running Reports

Running a Report Immediately

  1. Navigate to Reports in the left-hand navigation panel then the All Custom Reports tab
  2. Find the report link you want to run under the Spreadsheet Template Reports section
  3. Click the link text
  4. The report will be scheduled immediately.
  5. Navigate to the Reports page (using the navigation panel on the left) to view Requested Reports and monitor progress and download

Scheduling Recurring Reports

You can schedule reports to run automatically on a recurring basis:
  1. Navigate to Reports in the left-hand navigation panel then the All Custom Reports tab.
  2. Find the report link you want to schedule under the Spreadsheet Template Reports section
  3. Click the schedule icon next to the link
  4. Choose your schedule:
    • One-time: Select a specific date and time
    • Recurring: Choose frequency (daily, weekly, monthly)
  5. Set the time zone
  6. Enter email recipients who should receive the report
  7. Click Schedule
The system will automatically generate and email the report according to your schedule.

Editing template description

  1. Find your template in the list on the Spreadsheet Template Reports page.
  2. Click edit (pencil icon) to the far right of the template name
  3. Update the description
  4. Click outside the form to save
  1. Find the link under your template
  2. Click edit text next to the link
  3. Enter new text
  4. Press Enter or click outside to save

Managing parameters

Add a parameter:
  1. Click add parameter next to the link
  2. Enter parameter name and value
  3. Click the checkmark
Remove a parameter:
  1. Click the X icon on the parameter badge
  1. Click remove link next to the link you want to delete
  2. Confirm the deletion

Removing a template

  1. Click remove template next to the template
  2. Confirm the deletion
  3. Warning: This will also delete all links associated with the template

Downloading the original template

  1. Click the filename (e.g., weekly_report.xlsx) next to the template
  2. The original template file will download
  3. You can modify it and re-upload if needed

Available query functions

STRs use special functions that begin with a question mark (?). These functions are processed by the CRM and replaced with actual data when the report runs.

?COUNT - Count matching records

Purpose: Returns the number of contacts (people or organizations) that match your search criteria. Syntax: ?COUNT [search_criteria] Examples:
?COUNT department:Warehouse
?COUNT shift=Morning type=person
?COUNT worksite:"Factory A" code<3
Use Cases:
  • Count total workers in a specific department
  • Count how many workers are assigned to each shift
  • Track the number of contacts in different organizing committees

?SUM[FieldName] - Sum numeric custom field values

Purpose: Calculates the sum of a numeric custom field for all contacts matching your search criteria. Syntax: ?SUM[Custom Field Name] [search_criteria] Examples:
?SUM[Hours Worked] department:Warehouse
?SUM[Dues Collected] shift=Morning
?SUM[Grievances Filed] worksite:"Factory A"
Important Notes:
  • The custom field name must match exactly (case-insensitive)
  • The custom field must be a numeric type
  • If the field doesn’t exist, the cell will display “Custom field not found”
Use Cases:
  • Calculate total hours worked by department
  • Sum dues collected from workers in a specific location
  • Track total grievances filed across different shifts

?CHECKOFFCOUNT[Event Name] - Count event completions

Purpose: Counts how many event steps have been completed for specified events across all matching contacts. Syntax: ?CHECKOFFCOUNT[Event1,Event2,...] [search_criteria] Examples:
?CHECKOFFCOUNT[One-on-One] department:Warehouse
?CHECKOFFCOUNT[House Visit,Phone Call] shift=Morning
?CHECKOFFCOUNT[Card Signed,Petition Signed] type=all
Important Notes:
  • Multiple event names are separated by commas (no spaces)
  • Event names must match exactly (case-insensitive)
  • Counts all completed steps for the specified events
  • If events don’t exist, the cell will display “Events not found”
Use Cases:
  • Track how many one-on-one conversations have been completed
  • Count total organizing activities (house visits + phone calls) per department
  • Monitor union card signature progress
  • Measure organizing committee participation

?FIRSTNAME - Get first names

Purpose: Returns a comma-separated list of first names for people matching your criteria. Syntax: ?FIRSTNAME [search_criteria] Examples:
?FIRSTNAME role:steward
?FIRSTNAME department:Warehouse shift=Morning
?FIRSTNAME committee:"Organizing Committee"
Important Notes:
  • Only works for people, not organizations
  • Returns empty string if no matches found
  • Names are sorted alphabetically
Use Cases:
  • Generate a friendly list of shop stewards for a department
  • Create attendance lists for organizing meetings
  • Build phone bank contact lists

?FULLNAME - Get full names (people only)

Purpose: Returns a comma-separated list of full names (first and last) for people matching your criteria. Syntax: ?FULLNAME [search_criteria] Examples:
?FULLNAME role:steward
?FULLNAME department:Warehouse attended=true
?FULLNAME committee:"Organizing Committee"
Important Notes:
  • Only returns names for people, not organizations
  • Even if search includes organizations, only person names are returned
  • Names are sorted alphabetically
Use Cases:
  • Generate complete rosters of workers by department
  • Create sign-in sheets for meetings
  • List organizing committee members

?NAME - Get names (people and organizations)

Purpose: Returns a comma-separated list of names for both people and organizations matching your criteria. Syntax: ?NAME [search_criteria] Examples:
?NAME type=all worksite:"Factory A"
?NAME role:steward
?NAME type=organization parent:null
Important Notes:
  • Works for both people and organizations
  • Returns the appropriate name format for each entity type
  • Names are sorted alphabetically
Use Cases:
  • List all contacts (workers and organizations) in a worksite
  • Generate lists that include both union locals and members
  • Create comprehensive contact directories

?FIRSTNAMELASTINITIAL - Get abbreviated names

Purpose: Returns a comma-separated list of names in “FirstName L.” format (first name followed by last initial). Syntax: ?FIRSTNAMELASTINITIAL [search_criteria] Examples:
?FIRSTNAMELASTINITIAL committee:"Organizing Committee"
?FIRSTNAMELASTINITIAL shift=Night department:Loading
?FIRSTNAMELASTINITIAL attended=true
Result Format: “Maria G., John D., Sarah M.” Use Cases:
  • Create privacy-conscious lists for public bulletin boards
  • Generate abbreviated rosters for team assignments
  • Build contact lists that maintain some anonymity

?HIERARCHICALNAME - Get organizational hierarchy

Purpose: Returns organizational names with their parent organization hierarchy. Syntax: ?HIERARCHICALNAME [search_criteria] Examples:
?HIERARCHICALNAME type=organization
?HIERARCHICALNAME worksite:"Factory A" type=organization
?HIERARCHICALNAME parent_org:"AFL-CIO"
Result format: “AFL-CIO : Local 123” or “Parent Company : Subsidiary” Important notes:
  • Only works for organizations, not people
  • Shows the full organizational chain
  • Returns empty string for people or organizations without parents
Use cases:
  • Display union structure (international : local : chapter)
  • Show corporate ownership hierarchies
  • Map employer-subcontractor relationships

Search criteria syntax

All STR functions use Broadstripes search language syntax. Here are the most common patterns:

Basic searches

name:Maria                    # Search by name
department:Warehouse          # Search by custom field
shift=Morning                 # Exact match on custom field
worksite:"Factory A"          # Use quotes for multi-word values
type=person                   # Search only people
type=organization             # Search only organizations
type=all                      # Search both people and organizations

Numeric comparisons

code<3                        # Entity code less than 3 (codes typically range 0-5)
code>2                        # Entity code greater than 2
age>=18                       # Custom field greater than or equal to 18

Multiple criteria

You can combine multiple search terms (they work as AND conditions):
?COUNT department:Warehouse shift=Morning
?COUNT worksite:"Factory A" role:steward
?FULLNAME committee:"Organizing Committee" attended=true

Special searches

id="ABC123"                   # Search by Broadstripes ID
code=5                        # Search by entity code number

Using cell references

One of the most powerful features of STRs is the ability to reference other cells in your formulas using the %CellReference% syntax.

Basic cell reference syntax

Format: %A1%, %B2%, %C3%, etc. When the report runs, %B2% will be replaced with the actual value from cell B2.

Example: Dynamic Department Report

Create a report where you can easily change the department:
AB
Department:Warehouse
Total Workers:?COUNT department:%B1%
Morning Shift:?COUNT department:%B1% shift=Morning
Night Shift:?COUNT department:%B1% shift=Night
When the report runs:
  • Cell B2 becomes: ?COUNT department:Warehouse → 45
  • Cell B3 becomes: ?COUNT department:Warehouse shift=Morning → 28
  • Cell B4 becomes: ?COUNT department:Warehouse shift=Night → 17

Example: Worker Activity Report

Track activities for specific workers:
AB
Worker Name:Maria Garcia
One-on-Ones Completed:?CHECKOFFCOUNT[One-on-One] name:%B1%
House Visits:?CHECKOFFCOUNT[House Visit] name:%B1%
Cards Signed:?CHECKOFFCOUNT[Card Signed] name:%B1%

Combining Cell References with Excel Formulas

You can use Excel formulas to build your STR functions dynamically:
=CONCATENATE("?COUNT department:";B1)
=CONCATENATE("?SUM[Hours Worked] shift:";B2)
The Excel formula is evaluated first, then the resulting STR function is processed.

Using parameters

Parameters allow you to create multiple links to the same template, each with different values substituted at runtime. This is useful when you want to generate the same report for different departments, shifts, or worksites.

Parameter syntax

In your spreadsheet, use curly braces {parameter_name} to define where parameters should be substituted:
{department}
{shift}
{worksite}

Example: Multi-Department Template

Create a single template that works for any department:
AB
Department Report
Department:{department}
Total Workers:?COUNT department:{department}
Shop Stewards:?NAME department:{department} role:steward
Morning Shift:?COUNT department:{department} shift=Morning
Night Shift:?COUNT department:{department} shift=Night
Total Hours:?SUM[Hours Worked] department:{department}
After uploading this template, you can create multiple links with different parameter values: Link 1: “Warehouse Report”
  • Parameter: department=Warehouse
Link 2: “Loading Dock Report”
  • Parameter: department=Loading Dock
Link 3: “Maintenance Report”
  • Parameter: department=Maintenance
When a user clicks “Warehouse Report”, the system replaces {department} with Warehouse throughout the spreadsheet before processing the STR functions.

Multiple Parameters

You can use multiple parameters in a single template:
AB
Worksite:{worksite}
Shift:{shift}
Worker Count:?COUNT worksite:{worksite} shift:{shift}
Shop Steward:?NAME worksite:{worksite} shift:{shift} role:steward
Link configuration:
  • worksite=Factory A
  • shift=Morning

Parameters with cell references

You can combine parameters with cell references:
AB
Base Location:{worksite}
Specific Department:Warehouse
Worker Count:?COUNT worksite:%B1% department:%B2%
Excel Formula Syntax for Cell ReferencesWhen using cell references in Excel, STR functions must be formatted as Excel formulas. The syntax requires:
  1. Start with equals sign: =
  2. Wrap the entire STR function in double quotes: "..."
  3. Use ampersand (&) to concatenate cell values: &A2&
  4. Escape internal quotes with triple quotes: """
Examples:
  • Simple: ?NAME id=A2 becomes ="?NAME id="""&A2&""""
  • Multiple cells: ?COUNT department=B1 shift=B2 becomes ="?COUNT department="""&B1&""" shift="""&B2&""""
  • With text: ?COUNT worksite="Factory A" department=B1 becomes ="?COUNT worksite=""Factory A"" department="""&B1&""""
Why this works:
  • Excel evaluates the formula first, building the complete STR function string
  • The result is then processed by the STR system
  • Triple quotes (""") become single quotes (") in the final string

Working with Excel formulas

STRs work seamlessly with native Excel formulas, allowing you to build sophisticated reports.

Processing order

  1. Parameters are substituted (e.g., {department}Warehouse)
  2. Excel formulas are evaluated
  3. Cell references are resolved (e.g., %B2% → actual value)
  4. STR functions are executed
  5. Results are written back to cells

Example: Percentage Calculations

Calculate what percentage of workers have signed union cards:
ABC
Total Workers:?COUNT type=person
Signed Cards:?CHECKOFFCOUNT[Card Signed] type=person
Percentage:=B2/B1
Formatted:=TEXT(C3,"0%")

Example: Conditional Formatting

Build dynamic labels based on counts:
AB
Shop Stewards:?COUNT role:steward
Status:=IF(B1>=5,"Adequate","Need More")

Example: Building Complex Queries

Use CONCATENATE to build queries from multiple cells:
ABC
Department:Warehouse
Role:steward
Query Result:=CONCATENATE("?NAME department:";B1;" role:";B2)
Cell C3 becomes: ?NAME department:Warehouse role:steward

Practical examples

Example 1: Department summary report

Goal: Create a summary showing worker counts and activities by department. Template Structure:
AB
Department Activity Report
Department:{department}
Report Date:=TODAY()
Worker Counts
Total Workers:?COUNT department:{department}
Morning Shift:?COUNT department:{department} shift=Morning
Night Shift:?COUNT department:{department} shift=Night
Shop Stewards:?COUNT department:{department} role:steward
Organizing Activity
One-on-Ones Completed:?CHECKOFFCOUNT[One-on-One] department:{department}
House Visits Completed:?CHECKOFFCOUNT[House Visit] department:{department}
Total Contacts:=B11+B12
Union Card Progress
Cards Signed:?CHECKOFFCOUNT[Card Signed] department:{department}
Percentage Signed:=B16/B6
Formatted %:=TEXT(B17,"0%")
Shop Steward List
Stewards:?NAME department:{department} role:steward
Links to Create:
  • “Warehouse Department Report” with parameter department=Warehouse
  • “Loading Dock Department Report” with parameter department=Loading Dock
  • “Maintenance Department Report” with parameter department=Maintenance

Example 2: Worksite comparison report

Goal: Compare organizing metrics across multiple worksites. Template Structure:
ABCD
Multi-Worksite Comparison
MetricFactory AFactory BFactory C
Total Workers?COUNT worksite:"Factory A"?COUNT worksite:"Factory B"?COUNT worksite:"Factory C"
Shop Stewards?COUNT worksite:"Factory A" role:steward?COUNT worksite:"Factory B" role:steward?COUNT worksite:"Factory C" role:steward
Cards Signed?CHECKOFFCOUNT[Card Signed] worksite:"Factory A"?CHECKOFFCOUNT[Card Signed] worksite:"Factory B"?CHECKOFFCOUNT[Card Signed] worksite:"Factory C"
% Signed=B5/B3=C5/C3=D5/D3
One-on-Ones?CHECKOFFCOUNT[One-on-One] worksite:"Factory A"?CHECKOFFCOUNT[One-on-One] worksite:"Factory B"?CHECKOFFCOUNT[One-on-One] worksite:"Factory C"
House Visits?CHECKOFFCOUNT[House Visit] worksite:"Factory A"?CHECKOFFCOUNT[House Visit] worksite:"Factory B"?CHECKOFFCOUNT[House Visit] worksite:"Factory C"
Total Contacts=B7+B8=C7+C8=D7+D8
Link to Create:
  • “All Worksites Comparison Report” (no parameters needed)

Example 3: Worker activity tracker

Goal: Track organizing activities for individual workers. Template Structure:
AB
Worker Activity Report
Worker Name:{worker_name}
Report Date:=TODAY()
Contact Information
Full Name:?FULLNAME name:{worker_name}
Department:(manually filled or from custom field)
Shift:(manually filled or from custom field)
Organizing Activities
One-on-One Conversations:?CHECKOFFCOUNT[One-on-One] name:{worker_name}
Phone Calls:?CHECKOFFCOUNT[Phone Call] name:{worker_name}
House Visits:?CHECKOFFCOUNT[House Visit] name:{worker_name}
Meetings Attended:?CHECKOFFCOUNT[Meeting Attended] name:{worker_name}
Total Contacts:=SUM(B11:B14)
Commitment Level
Union Card Signed:?CHECKOFFCOUNT[Card Signed] name:{worker_name}
Petition Signed:?CHECKOFFCOUNT[Petition Signed] name:{worker_name}
Committee Member:?CHECKOFFCOUNT[Committee Member] name:{worker_name}
Links to Create:
  • “Maria Garcia Activity” with parameter worker_name=Maria Garcia
  • “John Smith Activity” with parameter worker_name=John Smith
  • Individual links for key organizing committee members

Example 4: Weekly organizing dashboard

Goal: High-level overview of campaign progress for leadership team. Template structure:
ABCD
Weekly organizing dashboard
Week ending:=TODAY()
Overall progressCountGoal% of Goal
Total workers in database?COUNT type=person500=B5/C5
Union cards signed?CHECKOFFCOUNT[Card Signed] type=person300=B6/C6
Organizing Committee Members?COUNT committee:"Organizing Committee"50=B7/C7
Shop Stewards Identified?COUNT role:steward25=B8/C8
This week’s activity
One-on-one conversations?CHECKOFFCOUNT[One-on-One] date:thisweek
House Visits Completed?CHECKOFFCOUNT[House Visit] date:thisweek
Phone Calls Made?CHECKOFFCOUNT[Phone Call] date:thisweek
Total Contacts This Week=SUM(B11:B13)
By departmentWorkersCards Signed% Signed
Warehouse?COUNT department:Warehouse?CHECKOFFCOUNT[Card Signed] department:Warehouse=C17/B17
Loading Dock?COUNT department:"Loading Dock"?CHECKOFFCOUNT[Card Signed] department:"Loading Dock"=C18/B18
Maintenance?COUNT department:Maintenance?CHECKOFFCOUNT[Card Signed] department:Maintenance=C19/B19
Administration?COUNT department:Administration?CHECKOFFCOUNT[Card Signed] department:Administration=C20/B20
Shop steward list
All stewards:?NAME role:steward
Link to create:
  • “Weekly dashboard” (no parameters, run weekly)

Example 5: Shift-based contact lists

Goal: Generate contact lists for different shifts for phone banking or door knocking. Template structure:
AB
Contact List for Phone Banking
Shift:{shift}
Worksite:{worksite}
Generated:=TODAY()
Summary
Total Workers on List:?COUNT shift:{shift} worksite:{worksite}
Already Contacted:?CHECKOFFCOUNT[Phone Call] shift:{shift} worksite:{worksite}
Remaining:=B6-B7
Contact List
Workers to Call:?FULLNAME shift:{shift} worksite:{worksite}
Priority Contacts
Shop Stewards:?NAME shift:{shift} worksite:{worksite} role:steward
Committee Members:?NAME shift:{shift} worksite:{worksite} committee:"Organizing Committee"
Links to Create:
  • “Morning Shift - Factory A” with parameters shift=Morning, worksite=Factory A
  • “Night Shift - Factory A” with parameters shift=Night, worksite=Factory A
  • “Morning Shift - Factory B” with parameters shift=Morning, worksite=Factory B
  • “Night Shift - Factory B” with parameters shift=Night, worksite=Factory B

Example 6: Dynamic query builder

Goal: Allow users to build custom queries by filling in cell values. Template structure:
ABC
Custom query report
Enter your search criteria:
Department:Warehouse
Shift:Morning
Role:steward
Results:
Total matching:?COUNT department:%B4% shift:%B5%
With role:?COUNT department:%B4% shift:%B5% role:%B6%
Names:?NAME department:%B4% shift:%B5%
Names with role:?NAME department:%B4% shift:%B5% role:%B6%
Organizing Activity:
One-on-Ones:?CHECKOFFCOUNT[One-on-One] department:%B4% shift:%B5%
House Visits:?CHECKOFFCOUNT[House Visit] department:%B4% shift:%B5%
Cards Signed:?CHECKOFFCOUNT[Card Signed] department:%B4% shift:%B5%
Usage: Users change the values in cells B4, B5, and B6 before uploading, or use parameters to create multiple versions.

Troubleshooting

Error: “CELL REFERENCE ERROR: B52”

Cause: The cell reference you specified doesn’t exist or is empty. Solutions:
  • Verify the cell reference is correct (e.g., %B2% not %B52%)
  • Ensure the referenced cell contains a value
  • Check that you’re using the correct column and row numbers
Example:
❌ ?COUNT name:%B52%   (if B52 doesn't exist)
✅ ?COUNT name:%B2%    (if B2 contains "Maria")

Error: “SPREADSHEET LOGIC ERROR: ’?COUNT blah’”

Cause: The search criteria in your STR function is invalid or uses incorrect syntax. Common Issues:
  • Misspelled custom field names
  • Invalid search operators
  • Missing quotes around multi-word values
  • Typos in search terms
Solutions:
  • Check your search syntax against the examples in this guide
  • Verify custom field names match exactly (case doesn’t matter)
  • Use quotes around values with spaces: worksite:"Factory A"
  • Test your search criteria in Broadstripes’ search interface first
Examples:
❌ ?COUNT deparment:Warehouse      (misspelled "department")
✅ ?COUNT department:Warehouse

❌ ?COUNT worksite:Factory A        (missing quotes)
✅ ?COUNT worksite:"Factory A"

❌ ?COUNT role==steward             (wrong operator)
✅ ?COUNT role:steward

Error: “Custom field not found”

Cause: The custom field name in your ?SUM function doesn’t match any custom field in your project. Solutions:
  • Go to Settings → Custom Fields and verify the exact field name
  • Check for typos or extra spaces in the field name
  • Ensure the field exists in your project
  • Field name matching is case-insensitive, but spelling must be exact
Examples:
❌ ?SUM[Hours Work] department:Warehouse      (missing "ed")
✅ ?SUM[Hours Worked] department:Warehouse

❌ ?SUM[hours_worked] department:Warehouse    (underscore vs space)
✅ ?SUM[Hours Worked] department:Warehouse

Error: “Events not found”

Cause: The event name in your ?CHECKOFFCOUNT function doesn’t match any event in your project. Solutions:
  • Go to Settings → Events and verify the exact event name
  • Check for typos in event names
  • Ensure all event names in comma-separated lists are correct
  • Event name matching is case-insensitive, but spelling must be exact
Examples:
❌ ?CHECKOFFCOUNT[One-on-one] type=person     (wrong hyphenation)
✅ ?CHECKOFFCOUNT[One-on-One] type=person

❌ ?CHECKOFFCOUNT[House Visit, Phone Call] type=person    (space after comma)
✅ ?CHECKOFFCOUNT[House Visit,Phone Call] type=person

No results when expected

Cause: Your search criteria is too restrictive or doesn’t match any records. Solutions:
  • Simplify your search by removing criteria one at a time
  • Test the search in Broadstripes’ main search interface
  • Verify the values you’re searching for actually exist in the database
  • Check for typos in search values
Debugging Steps:
  1. Start with a simple search: ?COUNT type=all
  2. Add criteria one at a time: ?COUNT department:Warehouse
  3. Add more filters: ?COUNT department:Warehouse shift=Morning
  4. Identify which criterion is eliminating all results

Parameters not being substituted

Cause: Parameter syntax is incorrect or the parameter wasn’t configured in the link. Solutions:
  • Verify you’re using curly braces: {parameter_name} not [parameter_name]
  • Check that the parameter is added to the link with the correct name
  • Parameter names are case-sensitive: {Department} is different from {department}
  • Ensure there are no spaces in parameter names
Examples:
❌ [department]           (wrong brackets)
✅ {department}

❌ {Department Name}      (spaces not allowed)
✅ {department_name}

Excel formulas not working

Cause: The formula syntax is incorrect or incompatible with the report processing. Solutions:
  • Test the Excel formula independently before combining with STR functions
  • Ensure cell references in formulas are correct
  • Use simple formulas when possible
  • Verify that the formula produces a valid STR function string
Example issue: If you use =CONCATENATE("?COUNT name:";B1) but B1 is empty, it produces ?COUNT name: which is invalid. Solution: Ensure referenced cells have values before the report runs.

Report fails to generate

Possible causes:
  • Template file is corrupted
  • Too many records to process (very large datasets)
  • Invalid Excel file format
Solutions:
  • Re-save your template as .xlsx format
  • Try a simpler version of the template to isolate the issue
  • Contact your Broadstripes administrator if the issue persists
  • Check the Requested Reports page for specific error messages

Performance issues (slow report generation)

Cause: Complex queries across large datasets can take time. Expected times:
  • Small reports (< 1000 records): Usually complete in under a minute
  • Medium reports (1000-10000 records): May take 1-5 minutes
  • Large reports (> 10000 records): May take 5-15 minutes
Tips for faster reports:
  • Use more specific search criteria to reduce the number of records processed
  • Avoid using type=all unless necessary
  • Limit the number of STR functions in a single template
  • Consider breaking very large reports into multiple smaller reports

Best practices

Template design

  1. Use clear headers and labels: Make it obvious what each number represents
  2. Add a report title: Include the report name and purpose at the top
  3. Include generation date: Use =TODAY() so users know when the report was generated
  4. Format numbers appropriately: Use percentage, currency, or number formatting
  5. Add explanatory text: Help users understand what they’re looking at
  6. Group related metrics: Use sections with headers
  7. Use visual formatting: Colors, bold text, and borders improve readability

Query optimization

  1. Be specific with search criteria: More specific = faster queries
  2. Avoid redundant queries: If you need the same data twice, reference the first cell
  3. Use parameters for recurring values: Easier to maintain and update
  4. Test queries in the search interface first: Verify your syntax before adding to templates
  1. Use descriptive link text: “Warehouse Weekly Report” not “Report 1”
  2. Organize by frequency: Group daily, weekly, and monthly reports
  3. Document parameter meanings: Add notes about what each link does
  4. Delete unused links: Keep your list clean and manageable

Maintenance

  1. Keep original template files: Store local copies of your templates
  2. Version your templates: Save new versions when making significant changes
  3. Test after updates: Run a test report after uploading changes
  4. Document custom fields: Keep a list of custom field names used in templates

Tips for labor organizing use cases

Tracking card signatures

Create a dashboard showing:
  • Total workers vs. cards signed (percentage)
  • Breakdown by department, shift, or worksite
  • Trend over time (if you run the report weekly)

Identifying high-priority contacts

Use functions to find:
  • Workers who haven’t been contacted recently
  • Departments with low card signature rates
  • Shifts with no shop stewards
  • Worksites with low organizing activity

Planning phone banks and door knocks

Generate lists showing:
  • Workers by shift for targeted outreach
  • Names in “FirstName L.” format for privacy
  • Contact counts to estimate volunteer needs
  • Priority contacts (committee members, stewards)

Measuring organizing committee engagement

Track metrics like:
  • Number of one-on-ones conducted by each organizer
  • Committee member participation in events
  • Distribution of organizing activity across departments
  • Growth in committee membership over time

Reporting to leadership

Create executive summaries with:
  • High-level progress metrics (% signed, total contacts)
  • Comparisons across worksites or departments
  • Week-over-week or month-over-month changes
  • Visual formatting to highlight key achievements

Advanced techniques

Creating dynamic headers

Use cell references and CONCATENATE to create dynamic report titles:
AB
Department:Warehouse
Report Title:=CONCATENATE(B1," Department Report - ",TEXT(TODAY(),"mm/dd/yyyy"))
Result: “Warehouse Department Report - 09/29/2025”

Conditional alerts

Use IF statements to highlight issues:
ABC
Shop Stewards:?COUNT role:steward
Status:=IF(B1<5,"⚠ NEED MORE STEWARDS","✓ Adequate")

Progress bars

Create visual progress indicators:
ABCD
Total Workers:100
Cards Signed:?CHECKOFFCOUNT[Card Signed] type=person
Progress:=REPT("█",B2/10)=TEXT(B2/B1,"0%")

Multi-sheet reports

You can use multiple sheets in your template:
  • Sheet 1: Executive summary
  • Sheet 2: Detailed metrics by department
  • Sheet 3: Worker contact lists
  • Sheet 4: Raw data
STR functions work on any sheet in the workbook.

Combining with pivot tables

  1. Use STR functions to generate raw data on one sheet
  2. Create a pivot table on another sheet
  3. When the report runs, the pivot table will update with fresh data
Note: Make sure your data range is set correctly so new data is included.

Frequently asked questions

Q: Can I use STR functions in formulas? A: Yes, STR functions produce values that can be used in Excel formulas. For example:
Cell B1: ?COUNT department:Warehouse
Cell B2: ?COUNT department:Warehouse shift=Morning
Cell B3: =B2/B1    (percentage of warehouse workers on morning shift)

Q: Can I share templates between projects? A: Templates are project-specific. You’ll need to download the template file and re-upload it to another project. Note that custom field names and event names may differ between projects.
Q: How often can I run a report? A: You can run reports as often as needed. For recurring reports, common schedules are:
  • Daily (morning reports for organizers)
  • Weekly (progress updates for leadership)
  • Monthly (comprehensive campaign reviews)

Q: Can I edit a report after it’s generated? A: Yes. Download the generated report from the Requested Reports page. It’s a standard Excel file that you can open, edit, and save locally. Changes won’t affect the template.
Q: What happens if I update a template? A: When you upload a new version of a template:
  • The new version will be used for all future report runs
  • Existing links remain intact
  • Previously generated reports are not affected

Q: Can I schedule a report to run automatically? A: Yes. Click the schedule icon next to any link and configure the recurring schedule. The report will generate automatically and can be emailed to recipients.
Q: How do I know when my report is ready? A: Navigate to Reports → Requested Reports. You’ll see:
  • Requested: Report is queued
  • Processing: Report is currently being generated
  • Successful: Report is ready to download
  • Failed: An error occurred (check the error message)

Q: Can I use STR functions with imported data? A: Yes. STR functions query the Broadstripes database, which includes all manually entered and imported data. As long as the data is in your project, it’s searchable.
Q: Do I need special permissions to create templates? A: Yes. You must be a Project Administrator to upload templates and create links. Regular users can run reports if they have access to the links.
Q: Can I see who ran a report? A: Yes. The Requested Reports page shows who requested each report and when.

Getting help

If you encounter issues not covered in this guide:
  1. Check the error message: Most errors provide specific information about what went wrong
  2. Test your search syntax: Use the main search interface to verify your criteria work
  3. Simplify your template: Remove complexity to isolate the issue
  4. Contact your Broadstripes support: They can help troubleshoot project-specific issues
  5. Review the Requested Reports page: Check for detailed error messages