# Automated Import API Reference
Source: https://help.broadstripes.com/api/automated-import-api-reference
Technical specifications and examples for the Automated Import API
This page provides technical specifications for implementing automated data imports via the Broadstripes API.
## API Endpoints
| Environment | URL |
| -------------- | ------------------------------------------------------- |
| **Production** | `https://crm.broadstripes.com/api/automated_imports` |
| **Staging** | `https://groton.broadstripes.com/api/automated_imports` |
## HTTP Specifications
### Request Method
**POST** - All automated import requests must use the POST method
### Authentication
Include your authentication token in the HTTP header:
```
x-broadstripes-authentication-token: your-authentication-token-here
```
### Content Types
#### For CSV Data
* **Content-Type**: `multipart/form-data`
* **Content-Disposition**: `form-data; name="automated_import[source_document]"; filename="your-file.csv"`
#### For JSON Data
* **Content-Type**: `application/json`
* **Content-Disposition**: Not required (or use `application/json`)
## Request Examples
### CSV Import with curl
```bash theme={null}
curl https://crm.broadstripes.com/api/automated_imports \
-F 'automated_import[source_document]=@/path/to/your-file.csv' \
-H "x-broadstripes-authentication-token: your-authentication-token" \
-X POST
```
### JSON Import with curl
```bash theme={null}
curl https://crm.broadstripes.com/api/automated_imports \
--json '[{"first_name": "John", "last_name": "Smith", "employer": "Acme Inc"}]' \
-H "x-broadstripes-authentication-token: your-authentication-token" \
-X POST
```
## Response Format
### Success Response
**Status Code**: `200`
**Response Structure**:
```json theme={null}
{
"automated_import": {
"id": "unique-import-id",
"status": "scheduled",
"filename": "your-file.csv" // or NULL for JSON imports
}
}
```
### Error Responses
The API will return appropriate HTTP status codes and error messages for:
* Invalid authentication tokens
* Malformed data
* Configuration issues
* Server errors
## Code Examples
### Ruby CSV Import
```ruby theme={null}
require 'uri'
require 'net/http'
file_path = '/path/to/your-file.csv'
uri = URI.parse('https://crm.broadstripes.com/api/automated_imports')
boundary = "AaB03x"
post_body = []
post_body << "--#{boundary}\r\n"
post_body << "Content-Disposition: form-data; name=\"automated_import[source_document]\"; "
post_body << "filename=\"#{File.basename(file_path)}\"\r\n"
post_body << "Content-Type: text/csv\r\n"
post_body << "Content-Transfer-Encoding: binary\r\n"
post_body << "\r\n"
post_body << File.read(file_path, :mode => 'rb')
post_body << "\r\n--#{boundary}--\r\n"
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.read_timeout = 600
request = Net::HTTP::Post.new(uri.request_uri)
request.body = post_body.join
request['Content-Type'] = "multipart/form-data, boundary=#{boundary}"
request['x-broadstripes-authentication-token'] = "your-authentication-token"
response = http.request(request)
```
### Ruby JSON Import
```ruby theme={null}
require 'uri'
require 'net/http'
require 'json'
# Array of records to import
post_json = [
{
"first_name" => "John",
"last_name" => "Smith",
"employer" => "Acme Inc",
"department" => "Assembly"
}
].to_json
uri = URI.parse('https://crm.broadstripes.com/api/automated_imports')
json_headers = {
"Content-Type" => "application/json",
"x-broadstripes-authentication-token" => "your-authentication-token"
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.read_timeout = 600
response = http.post(uri.path, post_json, json_headers)
```
## Data Format Requirements
### CSV Format
* **Headers Required**: First row must contain field names
* **Field Names**: Must match Broadstripes field names exactly
* **Encoding**: UTF-8 recommended
* **File Size**: No explicit limit, but consider timeout settings
### JSON Format
* **Structure**: Array of objects, where each object represents one record
* **Field Names**: Must match Broadstripes field names exactly
* **Data Types**: Use appropriate JSON data types (strings, numbers, booleans)
### Field Name Examples
Common field names that map to Broadstripes:
* `first_name`, `last_name`
* `employer`, `department`
* `address1`, `address2`, `city`, `state`, `zip`
* `phone`, `email`
* Custom field names (must match exactly as configured in your project)
## ZIP File Support (CSV Only)
For CSV imports, you can send a ZIP file containing multiple CSV files with specific names:
1. `people_modifications.csv`
2. `address_modifications.csv`
3. `phone_modifications.csv`
4. `employment_modifications.csv`
Files are processed in the order listed above.
## Best Practices
### Performance
* **Batch Size**: Consider breaking large datasets into smaller batches
* **Timeout**: Set appropriate timeout values (example shows 600 seconds)
* **Retry Logic**: Implement retry mechanisms for failed requests
### Security
* **HTTPS Only**: Always use HTTPS endpoints
* **Token Security**: Keep authentication tokens secure and rotate them regularly
* **Data Validation**: Validate data before sending to reduce errors
### Error Handling
* **Check Response Codes**: Always verify the HTTP response status
* **Parse Error Messages**: Handle and log API error responses appropriately
* **Monitor Import Status**: Use the web interface to monitor import progress and results
## Rate Limits
While not explicitly documented, consider implementing reasonable delays between requests to avoid overwhelming the API. Monitor your import success rates and adjust timing as needed.
## Testing
Always test your integration against the staging environment before using production:
* Use the staging URL for initial development
* Test with small datasets first
* Verify data appears correctly in the Broadstripes interface
* Confirm your authentication tokens work properly
# Setting Up Automated Import Configuration
Source: https://help.broadstripes.com/api/automated-import-configuration
Configure and test your automated data import settings
Before you can start importing data automatically, you need to create an automated import configuration that defines how your data should be processed.
## Creating Your Configuration
### Accessing the Configuration Page
1. Open the **Settings** dropdown in the upper right corner of the Broadstripes screen
2. Scroll to and select **"Automated import configurations"**
3. On the configuration page, click **"New Configuration"**
### Configuration Options
When creating your configuration, you can choose from the following settings:
#### Basic Settings
* **Type**: Choose between "General CSV" or "General ZIP"
* **User account**: Select the user that the imports will be associated with
* **Active**: Check to indicate the configuration is active and ready to receive data
#### Data Processing Rules
* **What should we do with records that don't match?**
* **Add**: Create new records for unmatched data
* **Skip**: Ignore unmatched records
* **New employment at same employer as existing employment should:**
* **Update**: Replace existing employment information
* **Append**: Add new employment while keeping existing
* **When importing addresses, phones or emails:**
* **Append**: Add new items alongside existing contact information
* **Replace**: Replace all existing contact information with imported data
### Getting Your Authorization Token
After saving your configuration, you'll be able to:
1. View the generated **authorization token**
2. Copy it to your clipboard for use in API calls
This token is essential for authenticating your automated import requests.
## Testing Your Import Configuration
Always test your automated import setup before using it in production. This helps ensure your data will be processed correctly.
### Manual Testing Process
The best way to test your automation is to run a manual import that mirrors your automated setup:
1. **Upload Test Data**
* Create a test CSV file with a few rows of dummy data
* Use the same headers you plan to use in your automation
* Keep the dataset small for quick testing
2. **Use Default Mappings**
* Don't change any field mappings from the defaults
* This is crucial because automated imports can't customize mappings
3. **Match Configuration Settings**
* Set the options in the "Configuration" panel to match your automated import configuration exactly
* This ensures the test mirrors production behavior
4. **Run the Test**
* Click **"Preview"** to see how your data will be processed
* When the preview looks correct, click **"Schedule import"**
* Review the completed import results
5. **Validate Results**
* The manual import results should mirror what will happen with automation
* Check that records are created/updated as expected
* Verify that data mapping worked correctly
### What to Look For
During testing, pay attention to:
* **Field Mapping**: Do your CSV headers map correctly to Broadstripes fields?
* **Data Quality**: Are values being imported into the correct fields?
* **Matching Logic**: Are existing records being updated or new ones created as expected?
* **Employment Handling**: Is employment information being processed correctly?
* **Contact Information**: Are addresses, phones, and emails being handled as configured?
## Monitoring Your Imports
### Viewing Import History
Project admins can monitor automated imports on the project's Automated Imports page:
```
https://crm.broadstripes.com/project-nickname/automated_imports
```
This page shows:
* Import status and completion times
* Number of records processed
* Any errors or warnings that occurred
* Links to detailed import results
### Import Status Indicators
* **Scheduled**: Import is queued for processing
* **Processing**: Import is currently running
* **Completed**: Import finished successfully
* **Failed**: Import encountered errors
## Best Practices
1. **Start Small**: Test with small datasets before scaling up
2. **Monitor Regularly**: Check the automated imports page for any issues
3. **Keep Configurations Simple**: Use clear, consistent field naming
4. **Document Your Setup**: Keep notes about your configuration choices
5. **Regular Testing**: Periodically test your automation to ensure it's working correctly
## Next Steps
Once your configuration is set up and tested:
* [Review the API specifications](/api/automated-import-api-reference) for technical implementation details
* Begin sending data to your automation endpoint
* Monitor imports regularly to ensure continued success
# Automated Import Overview
Source: https://help.broadstripes.com/api/automated-import-overview
Set up automated data import processes for your Broadstripes projects
The Broadstripes Automated Import system allows you to automatically import data into your projects via HTTP POST requests, supporting both CSV and JSON formats.
## Target Audience
Broadstripes users with Project Admin permissions.
## What is Automated Import?
Automated Import enables you to set up recurring or programmatic data imports for a particular Broadstripes project or set of projects. A Broadstripes "project" is typically matched with one union local or organizing campaign, and each project can have multiple automated import configurations.
## Process Overview
Setting up automated imports involves four main steps:
### 1. Create an Automated Import Configuration
A Broadstripes user with admin permissions creates a new "automated import configuration" in the system. This generates an **authorization token**, which is essential for securely delivering data to be imported.
### 2. Choose Your Data Format
Data can be delivered via HTTPS POST in either format:
* **Comma-separated values (CSV)**
* **JavaScript Object Notation (JSON)**
### 3. Test the Automation
Your data will be processed using the same rules as a manual import with the settings you specify. It's crucial to test the data format before production use to ensure everything works as expected.
### 4. Release to Production
Once you're satisfied with test results, the automated process can go live.
## Supported Data Formats
### CSV Format Options
When delivering CSV data, you have two approaches:
**Option 1: Single CSV File**
* Provide one CSV file with headers on the first line
* Can contain any data valid for import
* Simplest approach for most use cases
**Option 2: ZIP File with Multiple CSV Files**
* Useful when extracting from structured databases
* Must contain specifically named files processed in order:
1. `people_modifications.csv`
2. `address_modifications.csv`
3. `phone_modifications.csv`
4. `employment_modifications.csv`
### JSON Format
* Send data as JSON-encoded text
* Each record represented as a hash/object in an array
* More flexible for programmatic integrations
## Key Differences from Manual Imports
Automated imports have some important differences from manual imports:
1. **Automatic Field Mapping**: Header names must automatically map to Broadstripes fields - you cannot customize mappings
2. **Default Match Settings**: The system uses current default match checkbox settings
3. **Auto-Create Organizations**: The "Automatically create shops and departments and link employments" setting is always enabled
4. **No Preprocessing**: Data preprocessing steps don't occur in automated imports
## Next Steps
* [Set up your import configuration](/api/automated-import-configuration)
* [Review the API specifications](/api/automated-import-api-reference)
* Learn about testing your imports before going live
# Search API
Source: https://help.broadstripes.com/api/search-api
Retrieve contact data from your Broadstripes project via HTTP requests
The Broadstripes Search API allows you to retrieve data from a project via HTTP request, whether generated by a shell program such as curl or a scripting language.
## Target Audience
Broadstripes users with Project Admin permissions.
## API Overview
The API provides two kinds of data:
* **Contact Details**: A JSON array of specific attributes for a list of contacts matching your Broadstripes query
* **Contact Counts**: A simple count of contacts matching your query
## Prerequisites
To make successful API calls, you need two unique identifiers:
1. **Authentication Token** - Specific to your user account
2. **Project ID** - The ID for the project you're working with (API calls are project-specific)
### Getting Your Credentials
Both identifiers can be obtained from the Broadstripes interface:
1. Click the **Settings** dropdown in the upper right corner
2. Choose **"Your project settings"**
3. At the top of the page, you'll see both IDs with copy-to-clipboard icons
## Retrieving Contact Details
### Basic Request Structure
Here's a sample curl command that retrieves name data for people employed by "Acme Inc":
```bash theme={null}
curl -G -H "X-Broadstripes-Authentication-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
-d "project_id=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" \
-d "q=employer%3d%22Acme%20Inc%22" \
-d "fields%5B%5D=name" \
"https://crm.broadstripes.com/api/contacts"
```
### Request Parameters Explained
* **`-G`**: Tells curl to send data as part of the URL query string with GET method
* **`-H "X-Broadstripes-Authentication-Token"`**: Authentication header with your API token
* **`-d "project_id=..."`**: Your project ID as a query parameter
* **`-d "q=..."`**: URL-encoded search query using Broadstripes search language
* **`-d "fields[]=..."`**: Specifies which fields to return in the response
* **API Endpoint**: `https://crm.broadstripes.com/api/contacts`
### Available Fields
You can request data from the following fields:
* **`name`**: The name fields of the contact
* **`events`**: Events associated with the contact
* **`relationships`**: Information about the contact's relationships
* **`custom fields`**: Custom fields configured in your project. Field matching is case-insensitive.
* Example: `fields%5B%5D=Signed%20Card`
* **`external system IDs`**: [External system](/docs/project-settings/external-systems-settings) values stored on contacts. Use the system's key name, which follows the format: system name in lowercase, spaces replaced with underscores, followed by `_id`. Field matching is case-insensitive.
* **`code`** (alias: **`assessment`**): The contact's current [assessment code](/docs/admin-guides/data-tools/assessment-codes). Use whichever name your project uses for the assessment scale — `code` and `assessment` are interchangeable, and matching is case-insensitive. If a contact has not been assessed, the field returns `null`.
#### Retrieving assessment / code values
Here's a sample curl command that retrieves the name and current assessment for people employed by "Acme Inc":
```bash theme={null}
curl -G -H "X-Broadstripes-Authentication-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
-d "project_id=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" \
-d "q=employer%3d%22Acme%20Inc%22" \
-d "fields%5B%5D=name" \
-d "fields%5B%5D=assessment" \
"https://crm.broadstripes.com/api/contacts"
```
Use this when you want to export current assessment data to another system, build dashboards on top of organizing progress, or reconcile assessments with an external database. Whether you request `code` or `assessment` does not change the response — the value returned is the contact's current assessment on the project's scale.
#### External system key name examples
| External System Name | Key Name for API |
| -------------------- | ---------------------- |
| VAN | `van_id` |
| Acme System | `acme_system_id` |
| National Database | `national_database_id` |
#### Retrieving external system IDs
Here's a sample curl command that retrieves name and VAN ID for people employed by "Acme Inc":
```bash theme={null}
curl -G -H "X-Broadstripes-Authentication-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
-d "project_id=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" \
-d "q=employer%3d%22Acme%20Inc%22" \
-d "fields%5B%5D=name" \
-d "fields%5B%5D=van_id" \
"https://crm.broadstripes.com/api/contacts"
```
If a contact does not have a value for the requested external system, the field returns `null` in the response.
### URL Encoding for Search Queries
When using Broadstripes search language in URLs, you must convert operators and special characters to URL-encoded strings:
| Operator | URL Encoded | Query Example | URL Encoded Query |
| -------- | ----------- | ---------------------------- | ------------------------------------ |
| = | %3D | field=value | field%3Dvalue |
| != | %21%3D | field!=value | field%21%3Dvalue |
| > | %3E | field>value | field%3Evalue |
| >= | %3E%3D | field>=value | field%3E%3Dvalue |
| : | %3A | field:value | field%3Avalue |
| \< | %3C | field\
Broadstripes Call Script Syntax (BCSS) is a simple, node-based scripting language that lets you create conversation flows without programming knowledge. Think of it like creating a flowchart where each box (node) represents a point in the conversation.
The script editor will automatically create a flowchart of your script as you build it. This flowchart will help you visualize the conversation flow and make sure your script makes sense.
You can view the flowchart by clicking the "Flowchart" button in the top right corner of the script editor.
### Where to create call scripts
Project admins create call scripts on the Call Center settings page. To get to the Call Center settings page:
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**)
2. Choose **Scripts**
3. Then click the **+ New Call Script** button to start a new script
Now that you're in the call script editor, you can start creating your script. First, let's look at the basic structure of a call script and the different elements that make up a call script.
### Script structure
Every script consists of:
1. **Nodes**: Individual screens or conversation points
2. **Prompts**: Text displayed to the caller
3. **Buttons**: Options the caller can click to move through the script
4. **Transitions**: Connections between nodes
5. **Data collection**: Custom fields, event steps, or outcomes
### Basic BCSS syntax
**NODE** - Defining a page in the call script
```ruby theme={null}
NODE NodeName
PROMPT Your message here
BUTTON Button Text
TARGET NextNode
```
**Example**:
```ruby theme={null}
NODE Start
PROMPT Hi {{person.first_name}}, this is {{caller.name}} from the union. Do you have a moment to talk?
BUTTON Yes
TARGET Survey
BUTTON No
TARGET Callback
```
**PROMPT** - Displaying text to callers
Prompts can include HTML formatting and variables:
```ruby theme={null}
PROMPT
Hi {{person.first_name}}, this is {{caller.name}} calling from Local 123.
PROMPT
According to our records, you work at {{person.employer}}.
```
**BUTTON** - Creating navigation options
Buttons let callers move through the script:
```ruby theme={null}
BUTTON Yes, I'm interested
TARGET InterestedNode
```
You can have multiple buttons in a single node:
```ruby theme={null}
NODE Start
PROMPT Would you like to participate?
BUTTON Yes
TARGET Participate
BUTTON No
TARGET NoThanks
BUTTON Maybe later
TARGET Callback
```
You can also use `BUTTON` to check off event steps. To check off an event step, use the following syntax:
```ruby theme={null}
BUTTON button label
EVENT STEP event name : event step name
TARGET NextNode
```
**Example**:
```ruby theme={null}
BUTTON I will attend
EVENT STEP Outreach Event : Attending
TARGET Confirm location
BUTTON I will not attend
EVENT STEP Outreach Event : Not Attending
TARGET Goodbye
BUTTON Maybe
EVENT STEP Outreach Event : Maybe
TARGET Follow-up
```
**OUTCOME** - Custom labeled completion button
Mark a call as complete with a custom button label:
```ruby theme={null}
NODE Success
PROMPT Great! We'll be in touch soon.
BUTTON Call Back Later
OUTCOME Call Later
TARGET Goodbye
```
The text after `OUTCOME` will be the outcome recorded on the person's contact timeline.
Outcomes that are listed in the **Completed Outcomes** field of the Call Center settings page are not queued to be called again in a random pool using the same call script.
**Completed Outcomes** mark calls as finished and prevent people from being called again with the same script. You define these on the **Other settings** tab of the Call Center settings page.
When setting up your outcomes, distinguish between two types:
* **Add to "Completed Outcomes"**: Outcomes that mean "don't call again" (e.g., "Already Voted", "Not Eligible", "Declined")
* **Don't add to "Completed Outcomes"**: Outcomes that mean "try again" (e.g., "Left Voicemail", "No Answer", "Call Back Later")
A caller may potentially select several outcomes as they progress through the call/script. The last outcome selected will be the one recorded on the person's contact timeline.
**NEXT** - Automatic progression
`NEXT` automatically moves to another node with a Continue button:
```ruby theme={null}
NODE ThankYou
PROMPT Thank you for your time!
NEXT GoodbyeNode
```
**CONDITION** - Branching logic
Use conditions to personalize conversations based on data:
```ruby theme={null}
CONDITION CheckMembership
WHEN {{#or (eq person.custom_fields.[status text] "Active") (eq person.custom_fields.[status text] "On Leave") }}true{{/or}}
THEN ActiveMembersNode
WHEN {{#eq person.custom_fields.[status text] "Contingent" }}true{{/eq}}
THEN ContingentMembersNode
ELSE RetireesNode
```
**CUSTOM FIELD** - Collecting data with the call center script
Custom fields are the most flexible way to collect data during calls.
##### Field types
**Text Fields**:
* Free-form text entry
* Best for: Comments, notes, open-ended answers
* Example: "What's your biggest workplace concern?"
**Dropdown Fields**:
* Predefined options
* Best for: Standardized responses
* Example: "Shift: Morning, Afternoon, Night"
**Checkbox Fields**:
* True/false, yes/no
* Best for: Binary questions
* Example: "High risk worker"
**Number Fields**:
* Numeric values only
* Best for: Counts, amounts, ratings
* Example: "Years of service"
**Date Fields**:
* Best for: Dates of events, follow-ups
* Example: "Preferred callback date"
Multi-select fields are not supported in the call center. This includes multi-select dropdowns and sortable lists.
Collect information during the call:
```ruby theme={null}
NODE CollectInfo
PROMPT What's your biggest workplace concern?
CUSTOM FIELD REQUIRED WorkplaceConcern
BUTTON Continue
TARGET NextStep
```
The `REQUIRED` keyword means the caller must fill in the field before proceeding.
**END** - Auto "Call Complete" Button
`END` creates an exit node with an automatic "Call complete" button:
```ruby theme={null}
NODE Goodbye
PROMPT Thank you for your time. Have a great day!
END
```
**OUTCOME** - Recording call outcomes
Record the result of a call on the person's contact timeline.:
```ruby theme={null}
NODE Success
PROMPT Great! We'll be in touch soon.
BUTTON Call Back Later
OUTCOME Call Later
TARGET Goodbye
```
The text after `OUTCOME` will be the outcome recorded on the person's contact timeline.
A caller may potentially select several outcomes as they progress through the call/script. The last outcome selected will be the official outcome of the call and will be recorded on the person's contact timeline.
**CALL COMPLETE** - Custom labeled completion button
Mark a call as complete with a custom label END button:
```
NODE Success
PROMPT Great! We'll be in touch soon.
CALL COMPLETE Thank You
```
The text after `CALL COMPLETE` becomes the button label.
**DEAD END** - Blocking Call Completion
Sometimes you need to end a script path without allowing immediate call completion:
```
NODE CannotVote
PROMPT We're sorry, but inactive members cannot vote at this time.
DEAD END
```
`DEAD END` hides the "Call complete" button and forces the caller to go back to the previous node, skip the person or click "Call interrupted".
**SMS MESSAGE** - Sending text messages
Your project must have:
* At least one active virtual SMS phone number
* SMS-capable numbers (not all phone numbers support SMS)
#### Including SMS in Scripts
Add `SMS MESSAGE` to any node:
```ruby theme={null}
NODE SendReminder
PROMPT Can we send you a text reminder about the meeting?
SMS MESSAGE Hi {{person.first_name}}! Meeting Thursday 6pm at Local 123 Hall. See you there!
BUTTON Continue
TARGET NextNode
```
#### Message guidelines
**Length**: Keep messages under 160 characters when possible (standard SMS length)
**Content**:
* Include the union name so they know who's texting
* Be specific about action items (date, time, location)
* Make it personal with variables and merge fields
**Good Example**:
> "Hi Maria! Local 123 meeting Thursday 6pm at 100 Main St. Bring your questions!"
**Bad Example**:
> "Meeting Thursday"
**Merge fields**
Use merge fields to include unique IDs in links:
```ruby theme={null}
SMS MESSAGE Verify your voter registration: https://vote.org/verify/%VoterFile-ID%
```
Requirements:
* External system or custom field must have "Messaging merge token" enabled
* Person must have a value in that external system or custom field
* Token format: `%SystemName-ID%`
***
**Troubleshooting SMS**
**"No outgoing SMS number available"**:
* Project doesn't have active virtual SMS numbers
* Contact project admin immediately
**"Unable to send message"**:
* Network connectivity issue
* Person's number may not support SMS
* Try again or skip SMS step
**Person doesn't have cell phone**:
* System shows message: "No cell phone available"
* Can't send SMS to landlines
* Skip the SMS step and continue
**BCSS Variables**
Scripts can display personalized information using these variables:
**Person Information**
* `{{person.first_name}}` - First name (e.g., "Maria")
* `{{person.last_name}}` - Last name (e.g., "Garcia")
* `{{person.name}}` - Full name (e.g., "Maria Garcia")
**Caller Information**
* `{{caller.name}}` - The person making the call
**Employment Information**
* `{{person.employer}}` - Main employer
* `{{person.department}}` - Department or specific worksite
* `{{person.job_title}}` - Job title or classification
**Custom Fields**
* `{{person.custom_fields.[field_name text]}}` - Any custom field value (the field name must be lower case and followed by the word "text")
* Example: `{{person.custom_fields.[shift text]}}` displays the shift custom field
**Event Steps**
* `{{person.event_steps.[event_name : step_name]}}` - Event step status
* Example: `{{person.event_steps.[One-on-One : Completed]}}` shows if the step is checked (this will return true or false)
**External Systems (for merge tokens in SMS)**
* `%ExternalSystemName-ID%` - In SMS messages only
* Example: "Visit [https://vote.org/id/%VoterFile-ID%](https://vote.org/id/%VoterFile-ID%)"
* The system replaces the token with the person's external ID
### Script elements in detail
**Working with custom fields**
Custom fields let you collect project-specific data during calls. To use them:
1. The custom field must exist in your project (**Project settings → Custom fields**)
2. Optionally mark it as "Show in Call Center" for easier access
3. Reference it in your script:
```ruby theme={null}
NODE CollectShiftPreference
PROMPT What shift would you prefer for the union meeting?
CUSTOM FIELD PreferredShift
BUTTON Continue
TARGET Thanks
```
When the caller reaches this node, they'll see a field to enter the shift preference.
**Tips**:
* Use `REQUIRED` for critical data: `CUSTOM FIELD REQUIRED MembershipNumber`
* Use clear field names that describe what you're collecting
* Consider creating dropdown custom fields (using options) for consistency
#### Working with event steps
Event steps track activities and milestones. Buttons in scripts can automatically check event steps:
```ruby theme={null}
NODE MarkInterest
PROMPT Great! I'm marking you as interested in joining the organizing committee.
BUTTON Continue
EVENT STEP OrganizingCommittee : Interested
TARGET NextNode
```
You can also create buttons that check multiple event steps or collect event step data as the caller progresses through the script.
**Working with assessments**
Assessment codes (numbered 0-5) indicate the organizing strength or engagement level of a contact. If your project has "Display assessment in the Call Center" enabled, you can view the current assessment during calls.
If your project has "Enable editing of assessment in the Call Center" enabled, you can update the assessment during calls.
Common assessment scales:
* **0**: Unassessed
* **1**: Strong Union supporter
* **2**: Union supporter
* **3**: Undecided
* **4**: Leaning Hostile
* **5**: Hostile
Display assessment in the Call Center and Enable editing of assessment can be enabled in the Call Center Settings on the **Other settings** tab.
### Supplemental fields
Supplemental fields appear at the bottom of every node, regardless of which path the caller took through the script. Define them at the top of your script:
```ruby theme={null}
SUPPLEMENTAL
CUSTOM FIELD Best phone
CUSTOM FIELD Best email
CUSTOM FIELD Call Center notes
# The "LABEL" instruction below allows you to change the way a custom field is displayed.
LABEL Call notes
```
Use comments to provide additional information about the script to other users. Comments are not visible to callers.
Start a comment with `#`.
***
## Complete Example Scripts
### Example 1: Union Organizing Outreach with Conditional Routing
**Goal**: Contact members about union organizing efforts, collect petition signatures, and recruit volunteers using conditional routing based on member status.
```ruby theme={null}
SUPPLEMENTAL
# The "supplemental" section identifies (and optionally, allows you to label) custom fields that will appear at the bottom
# of every page of the Call Center while a call is going on.
CUSTOM FIELD Best phone
CUSTOM FIELD Best email
CUSTOM FIELD Call Center notes
# The "LABEL" instruction below allows you to change the way a custom field is displayed.
LABEL Call notes
# The script really starts with this first "NODE". As with all nodes, it can be named anything the script-writer likes.
# The caller's goal here is to figure whether they've reached the worker.
# If they have, they start the pitch. If not, they can click a button to choose one of the other possible call OUTCOMEs.
NODE Start
PROMPT
Hi, may I speak to {{person.first_name}}?
My name is {{caller.name}}, and I am a [your job title] in [your department]. I'm calling to talk to you about what's going on at {{person.employer}} and about what our union is currently doing to organize and build power.
What have you heard so far about what our union is doing?
BUTTON Reached
OUTCOME Reached
TARGET Branch on Status
BUTTON Left employer
OUTCOME Left Employer
TARGET Date left employer
BUTTON Call back later
OUTCOME Call back later
TARGET Call back later
BUTTON Wrong number
OUTCOME Wrong number
TARGET Mark phone bad
BUTTON No answer or voicemail
OUTCOME No answer or voicemail
TARGET Send a text
NODE Call back later
PROMPT
We'll be happy to call another time. What would be best for you?
CUSTOM FIELD Callback time
LABEL Best time/date to call back
# The "END" instruction below tells the script parser that the call is over.
END
NODE Send a text
PROMPT
If you get voicemail or just no answer, DO NOT LEAVE VOICEMAIL.
If the person you're calling has a cell, send them the following text:
Is this a cell phone number?
Hi, {{person.first_name}}. This is {{caller.name}}. I am a [your title] in [your department]. I'm making calls with other members at our college to find out how people are doing and to let you know about a series of actions the union is taking over the summer to make sure that all of our members keep their jobs and stay safe during the pandemic. Do you have time to talk?
CUSTOM FIELD Phone-bank text sent
LABEL Sent a text
END
NODE Mark phone bad
PROMPT
Mark this number as BAD
Please locate the number you dialed in the upper right corner of this panel and click the switch next to it to change the setting from OK to BAD, indicating that the number should no longer be used.
If the person has a second number, please click the Go back button and call that number before marking the call complete.
Otherwise, please click the Call complete button.
END
NODE Date left employer
PROMPT
Do you know the date you left work?
CUSTOM FIELD Date left employer
LABEL Date left
NEXT Goodbye
CONDITION Branch on Status
# The line below uses a special syntax to evaluate the value of the "Status" custom text field on the called worker's record.
# NOTE: It's important that the custom field name specified here be in all lowercase, even if the field's name contains capital letters.
# Feel free to ask Broadstripes support for help creating such evaluations if you run into difficulties with the syntax.
WHEN {{#or (eq person.custom_fields.[status text] "Active") (eq person.custom_fields.[status text] "On Leave") }}true{{/or}}
THEN Message to Active Members
WHEN {{#eq person.custom_fields.[status text] "Contingent" }}true{{/eq}}
THEN Message to Contingent Members
ELSE Message to Retirees
NODE Message to Active Members
PROMPT
Thanks for taking a minute to talk. We're getting in touch with all active members during the pandemic to make sure you're aware of the union's efforts to ensure that our jobs will not be eliminated.
Have you heard about the work the union is doing?
BUTTON Yes
TARGET Petition pitch
BUTTON No
TARGET Retention work details
NODE Message to Contingent Members
PROMPT
Thanks for taking a minute to talk. We're getting in touch with union members during the pandemic to make sure that you're aware of the union's efforts to ensure that our jobs will not be eliminated.
Before we get to the details, can I ask if you've seen your hours reduced during the pandemic?
BUTTON Yes
EVENT STEP Hours Reduced : Yes
TARGET Heard about retention work?
BUTTON No
EVENT STEP Hours Reduced : No
TARGET Heard about retention work?
NODE Heard about retention work?
PROMPT
OK. Have you heard about the work the union is doing to preserve our jobs during the pandemic?
BUTTON Yes
TARGET Petition pitch
BUTTON No
TARGET Retention work details
NODE Message to Retirees
PROMPT
Thanks for taking a minute to talk. We're getting in touch with our retirees to make sure that you're aware that, despite the pandemic, the union is continuing to work to protect your pension and benefits.
We're also working hard to protect the jobs of current members. Have you heard about this campaign?
BUTTON Yes
TARGET Petition pitch
BUTTON No
TARGET Retention work details
NODE Retention work details
PROMPT
OK. Let me fill you in quickly about what's going on. The union has been working hard on multiple fronts to make sure that members will still have their jobs when the pandemic is finally over.
Here's some of what's going on:
Union negotiators are working with management to obtain commitments to preserve all full-time positions and to rehire contingent workers as soon as it's safe to return to work.
Union staff are lobbying the governor and our state reps for legislation requiring employers to hold full-time jobs and rehire contingent workers.
Union legal counsel is carefully reviewing all of our contracts to make sure we're using all available leverage to protect existing jobs.
NEXT Petition pitch
NODE Petition pitch
PROMPT
To win these battles, the union needs your support.
Would you be willing to sign a petition to the governor and the legislature urging them to approve and sign the job-protecting legislation I mentioned?
BUTTON Will sign
EVENT STEP Petition : Yes
TARGET Petition info
BUTTON Won't sign
EVENT STEP Petition : No
TARGET Petition feedback
# NOTE: Having the NEXT option below gives the caller a "Continue" button that allows them to skip the question.
NEXT Goodbye
NODE Petition info
PROMPT
Later today, I'll send you a link to the petition.
Would you prefer an email or a text?
BUTTON Email
EVENT STEP Petition : Email
TARGET Ask to Volunteer
BUTTON Text message
EVENT STEP Petition : Text
TARGET Ask to Volunteer
NODE Petition feedback
PROMPT
Can you tell me what's keeping you from signing the petition?
CUSTOM FIELD Reason won't sign
NEXT Goodbye
NODE Ask to Volunteer
PROMPT
Can you volunteer to help us reach out to more of our members by making calls from home?
BUTTON Yes
EVENT STEP Volunteer : Yes
TARGET Will volunteer
BUTTON No
EVENT STEP Volunteer : No
TARGET Goodbye
NODE Will volunteer
PROMPT
Great! Someone from the union will be in touch with you soon about setting you up to call other members.
Thank you for being willing to help support the campaign! Goodbye!
END
NODE Goodbye
PROMPT
Thank you for your time. It was nice talking to you.
END
```
**Key Features**:
* **SUPPLEMENTAL section** with labeled custom fields
* **Advanced CONDITION** with OR logic for member status routing
* **EVENT STEP** tracking throughout (Hours Reduced, Petition, Volunteer)
* **NEXT instruction** for automatic progression with "Continue" button
* HTML/CSS styling with colors, bold, lists, and blockquotes
* Person variables (`{{person.first_name}}`, `{{person.employer}}`)
* Custom field variables in CONDITION (`{{person.custom_fields.[status text]}}`)
* Comments explaining script logic
* Multiple call outcomes (Reached, Left Employer, Call back later, Wrong number, No answer/voicemail)
* Three distinct messaging paths based on member status
***
### Example 2: Basic GOTV Phone Bank
**Goal**: Remind voters to vote, confirm their plan, and collect vote intention.
```ruby theme={null}
NODE Start
PROMPT
Hi {{person.first_name}}, this is {{caller.name}} from Local 123.
Election day is coming up on November 5th. Do you have a moment?
BUTTON Yes, I have time
OUTCOME Reached
TARGET RemindVote
BUTTON Not right now
TARGET Callback
BUTTON Already voted
TARGET AlreadyVoted
BUTTON Remove from list
TARGET DoNotCall
NODE RemindVote
PROMPT Great! Have you made a plan to vote on November 5th?
BUTTON Yes, I have a plan
TARGET ConfirmPlan
BUTTON No, not yet
TARGET HelpMakePlan
BUTTON Not planning to vote
TARGET NotVoting
NODE ConfirmPlan
PROMPT Excellent! Can you share your plan? When will you vote?
CUSTOM FIELD REQUIRED VotePlan
BUTTON Continue
TARGET CheckSupport
NODE HelpMakePlan
PROMPT Let me help you make a plan. What would work best for you - voting early, voting by mail, or voting on election day?
CUSTOM FIELD VoteMethod
BUTTON Continue
TARGET CheckSupport
NODE CheckSupport
PROMPT One last question - do you support the union-endorsed candidates?
BUTTON Yes, definitely
TARGET StrongSupport
BUTTON Yes, probably
TARGET LikelySupport
BUTTON Undecided
TARGET Undecided
BUTTON No
TARGET NoSupport
NODE StrongSupport
PROMPT
That's great to hear! Thank you for your support.
We'll send you a text reminder before election day.
Can we text you at this number?
SMS MESSAGE Hi {{person.first_name}}! Reminder: Election Day is tomorrow, November 5th. Your vote matters! - Local 123
BUTTON Send reminder
OUTCOME Strong Support - Has Plan
TARGET Goodbye
NODE LikelySupport
PROMPT Thank you! If you have any questions about the candidates, visit our website at union.org/vote
BUTTON Finish call
OUTCOME Likely Support - Has Plan
TARGET Goodbye
NODE Undecided
PROMPT I understand. If you'd like more information about the endorsed candidates, check out union.org/vote
BUTTON Finish call
OUTCOME Undecided - Has Plan
TARGET Goodbye
NODE NoSupport
PROMPT I appreciate your honesty. Thank you for your time.
BUTTON Finish call
OUTCOME No Support - Has Plan
TARGET Goodbye
NODE NotVoting
PROMPT I understand. If you change your mind, we're here to help. Have a good day.
BUTTON Finish call
OUTCOME Not Planning to Vote
TARGET Goodbye
NODE AlreadyVoted
PROMPT That's wonderful! Thank you for voting early.
BUTTON Finish call
OUTCOME Already Voted
TARGET Goodbye
NODE Goodbye
PROMPT Have a great day!
END
NODE Callback
PROMPT What would be a better time to reach you?
CUSTOM FIELD CallbackTime
NEXT ThankYou
NODE ThankYou
PROMPT Thank you! We'll call back at a better time.
BUTTON Mark complete
OUTCOME Callback Requested
TARGET Goodbye
NODE DoNotCall
PROMPT
I'll make sure we don't call again.
BUTTON Mark complete
OUTCOME Do Not Call
TARGET Goodbye
END
```
**Key Features**:
* HTML/CSS styling for emphasis (bold, colors, italics)
* Multiple paths based on voter status
* SMS MESSAGE for election reminders
* Person variables `{{person.first_name}}`
* Data collection for vote plans
* Clear outcomes for reporting
* Callback option for busy voters
***
### Example 3: Member Survey and Issue Identification
**Goal**: Identify workplace issues, gauge union support, and recruit organizing committee members.
```ruby theme={null}
NODE Intro
PROMPT
Hi {{person.first_name}}, this is {{caller.name}} from Local 123.
We're talking to workers at {{person.employer}} in the {{person.department}} department about workplace issues.
Do you have 5 minutes?
BUTTON Yes
OUTCOME Reached
TARGET MainIssue
BUTTON No, call back later
TARGET Callback
NODE MainIssue
PROMPT What's the biggest issue you're facing at work right now?
CUSTOM FIELD REQUIRED BiggestIssue
BUTTON Continue
TARGET RateIssue
NODE RateIssue
PROMPT On a scale of 1-10, how serious is this issue for you?
CUSTOM FIELD REQUIRED IssueSeverity
BUTTON Continue
TARGET UnionSupport
NODE UnionSupport
PROMPT Would you support the union taking action on this issue?
BUTTON Definitely yes
TARGET StrongSupport
BUTTON Probably yes
TARGET ModerateSupport
BUTTON Not sure
TARGET Uncertain
BUTTON No
TARGET NoSupport
NODE StrongSupport
PROMPT That's great to hear! We're building an organizing committee to address these issues. Would you be interested in joining?
BUTTON Yes, I'm interested
TARGET CommitteeInterest
BUTTON Tell me more
TARGET ExplainCommittee
BUTTON Not right now
TARGET Thanks
NODE ModerateSupport
PROMPT I understand. Would you be willing to stay informed about union activities?
BUTTON Yes
TARGET StayInformed
BUTTON Maybe
TARGET Thanks
NODE Uncertain
PROMPT That's okay. Many people have questions. Would you like to attend an information meeting?
BUTTON Yes
TARGET Meeting
BUTTON Maybe later
TARGET Thanks
NODE NoSupport
PROMPT I appreciate your honesty. Thank you for your time.
BUTTON Mark complete
OUTCOME No Union Support
TARGET Thanks
NODE CommitteeInterest
PROMPT Excellent! I'm marking you as interested in the organizing committee. Someone will reach out within a week.
CUSTOM FIELD REQUIRED BestContactMethod
BUTTON Continue
OUTCOME Strong Support - Committee Interest
TARGET Thanks
NODE ExplainCommittee
PROMPT The organizing committee meets weekly to plan actions and build support. It's volunteer-based and we provide training. Interested?
BUTTON Yes
TARGET CommitteeInterest
BUTTON Let me think about it
TARGET Thanks
NODE StayInformed
PROMPT Perfect! We'll keep you updated via email. Can I confirm your email address?
CUSTOM FIELD Email
BUTTON Continue
OUTCOME Moderate Support - Stay Informed
TARGET Thanks
NODE Meeting
PROMPT Great! Our next meeting is Thursday at 6pm at the union hall. Can we send you a reminder?
BUTTON Yes, send reminder
TARGET SendReminder
BUTTON No reminder needed
TARGET Thanks
NODE SendReminder
PROMPT
Perfect! We'll send you the details via text.
Is this the best number to text?
Note: Confirm the phone number before sending.
SMS MESSAGE Hi {{person.first_name}}! Union info meeting Thursday 6pm at Local 123 Hall, 100 Main St. Questions? Reply to this text. - {{caller.name}}
NEXT Thanks
NODE Thanks
PROMPT Thank you so much for your time today. Your voice matters!
END
NODE Callback
PROMPT When would be a better time?
CUSTOM FIELD CallbackPreference
BUTTON Schedule callback
OUTCOME Callback Requested
TARGET Thanks
```
**Key Features**:
* HTML/CSS styling with colors and emphasis
* Custom field variables (`{{person.employer}}`, `{{person.department}}`)
* Issue identification and severity rating
* Union support assessment
* SMS MESSAGE with styling notes for callers
* Organizing committee recruitment path
* Multiple engagement levels captured
***
### Example 4: New Member Onboarding
**Goal**: Welcome new members, collect information, and schedule orientation.
```ruby theme={null}
NODE Welcome
PROMPT
Hi {{person.first_name}}, this is {{caller.name}} from Local 123.
Welcome to the union!
We're calling all new members at {{person.employer}} to make sure you have everything you need. Do you have a few minutes?
BUTTON Yes
OUTCOME Reached
TARGET GotCard
BUTTON No, call back later
TARGET Callback
NODE GotCard
PROMPT Great! Have you received your union membership card yet?
BUTTON Yes
TARGET GotHandbook
BUTTON No
TARGET NoCard
NODE NoCard
PROMPT We'll make sure one is sent to you right away. Can I confirm your mailing address?
CUSTOM FIELD REQUIRED MailingAddress
NEXT GotHandbook
NODE GotHandbook
PROMPT Have you received the new member handbook?
BUTTON Yes, I have it
TARGET ReadHandbook
BUTTON No
TARGET SendHandbook
NODE SendHandbook
PROMPT We can email you a digital copy and mail a printed one. What's your preferred email?
CUSTOM FIELD Email
NEXT ReadHandbook
NODE ReadHandbook
PROMPT The handbook covers your rights, benefits, and how the union works. Have you had a chance to look through it?
BUTTON Yes, I've read it
TARGET Questions
BUTTON Not yet
TARGET EncourageRead
NODE EncourageRead
PROMPT I encourage you to review it when you can. It has important information about your rights as a union member.
NEXT Questions
NODE Questions
PROMPT Do you have any questions about your membership or the union?
BUTTON Yes
TARGET AskQuestions
BUTTON No
TARGET Orientation
NODE AskQuestions
PROMPT What questions do you have?
CUSTOM FIELD MemberQuestions
NEXT AnswerQuestions
NODE AnswerQuestions
PROMPT [The caller addresses the questions]. Does that help?
BUTTON Yes
TARGET Orientation
BUTTON I have more questions
TARGET ScheduleCall
NODE Orientation
PROMPT We hold new member orientation sessions every month. Would you like to attend?
BUTTON Yes
TARGET OrientationDetails
BUTTON Maybe, tell me more
TARGET ExplainOrientation
BUTTON No thanks
TARGET GetInvolved
NODE ExplainOrientation
PROMPT Orientation covers how the union works, your rights under the contract, how to file grievances, and ways to get involved. It's about 2 hours and includes dinner. Interested?
BUTTON Yes
TARGET OrientationDetails
BUTTON No thanks
TARGET GetInvolved
NODE OrientationDetails
PROMPT Perfect! Our next orientation is [date] at [time] at the union hall. Can we send you a calendar reminder?
BUTTON Yes, by email
TARGET EmailReminder
BUTTON Yes, by text
TARGET TextReminder
BUTTON No reminder needed
TARGET Committees
NODE EmailReminder
PROMPT Great! We'll email you the details and a reminder.
CUSTOM FIELD Email
NEXT Committees
NODE TextReminder
PROMPT
Perfect! We'll text you a reminder.
Confirm this is the best number: {{person.custom_fields.[best phone text]}}
Note: Update the best phone custom field if needed before sending.
SMS MESSAGE Hi {{person.first_name}}! New member orientation {{person.custom_fields.[orientation date text]}} at Local 123 Hall, {{person.custom_fields.[union hall address text]}}. Dinner provided! - {{caller.name}}
NEXT Committees
NODE GetInvolved
PROMPT No problem! There are other ways to get involved with the union.
NEXT Committees
NODE Committees
PROMPT We have several committees you can join - organizing, political action, social events, and more. Would you like to learn about them?
BUTTON Yes
TARGET CommitteeInfo
BUTTON Maybe later
TARGET StayInTouch
NODE CommitteeInfo
PROMPT Which areas interest you most?
BUTTON Organizing new members
TARGET OrganizingCommittee
BUTTON Political action
TARGET PoliticalCommittee
BUTTON Social events
TARGET SocialCommittee
BUTTON I want to learn about all of them
TARGET AllCommittees
NODE OrganizingCommittee
PROMPT The organizing committee works on expanding membership and supporting campaigns. We meet twice a month. Interested?
BUTTON Yes
TARGET SignUpOrganizing
BUTTON Tell me about other committees
TARGET PoliticalCommittee
NODE SignUpOrganizing
PROMPT Excellent! I'm adding you to the organizing committee list. Someone will contact you before the next meeting.
CUSTOM FIELD PreferredContactMethod
NEXT AnyOther
NODE PoliticalCommittee
PROMPT The political action committee works on endorsements, voter mobilization, and lobbying. Interested?
BUTTON Yes
TARGET SignUpPolitical
BUTTON Tell me about other committees
TARGET SocialCommittee
NODE SignUpPolitical
PROMPT Great! I'm adding you to the political action committee list.
CUSTOM FIELD PreferredContactMethod
NEXT AnyOther
NODE SocialCommittee
PROMPT The social committee plans events, fundraisers, and member gatherings. Interested?
BUTTON Yes
TARGET SignUpSocial
BUTTON No
TARGET AnyOther
NODE SignUpSocial
PROMPT Wonderful! I'm adding you to the social committee list.
CUSTOM FIELD PreferredContactMethod
NEXT AnyOther
NODE AllCommittees
PROMPT Perfect! I'm marking you as interested in all committees. Someone from each one will reach out.
CUSTOM FIELD PreferredContactMethod
BUTTON Sign up
OUTCOME New Member - All Committees
TARGET StayInTouch
NODE AnyOther
PROMPT Any other committees you'd like to join?
BUTTON Yes
TARGET CommitteeInfo
BUTTON No, that's all
TARGET StayInTouch
NODE StayInTouch
PROMPT What's the best way to keep you updated about union news and events?
BUTTON Email
TARGET EmailContact
BUTTON Text messages
TARGET TextContact
BUTTON Phone calls
TARGET PhoneContact
BUTTON All of the above
TARGET AllContact
NODE EmailContact
PROMPT Can I confirm your email address?
CUSTOM FIELD Email
NEXT ThankYou
NODE TextContact
PROMPT Can I confirm your cell phone number?
CUSTOM FIELD CellPhone
NEXT ThankYou
NODE PhoneContact
PROMPT Can I confirm your phone number?
CUSTOM FIELD PhoneNumber
NEXT ThankYou
NODE AllContact
PROMPT Great! Let me confirm your contact information.
CUSTOM FIELD Email
CUSTOM FIELD CellPhone
NEXT ThankYou
NODE ThankYou
PROMPT Thank you {{person.first_name}}! Welcome to Local 123. We're glad to have you as a member!
END
NODE ScheduleCall
PROMPT When would be a good time for a longer conversation?
CUSTOM FIELD CallbackDateTime
BUTTON Schedule call
OUTCOME Follow-up Call Needed
TARGET ThankYou
NODE Callback
PROMPT When would be a better time to call?
CUSTOM FIELD CallbackTime
BUTTON Schedule callback
OUTCOME Callback Requested
TARGET ThankYou
```
**Key Features**:
* Welcome message with HTML/CSS styling
* SMS MESSAGE with custom field variables in message
* Multiple committee signup paths
* Custom field variable usage (`{{person.employer}}`, `{{person.custom_fields.[best phone text]}}`)
* Contact preference collection
* Progressive engagement strategy
***
### Example 5: Personalized Member Outreach with Conditions
**Goal**: Route calls based on member status, department, and previous engagement using advanced CONDITION logic.
```ruby theme={null}
NODE Start
PROMPT
Hi {{person.first_name}}, this is {{caller.name}} from Local 123.
Do you have a few minutes to talk about what's happening with the union?
BUTTON Yes
OUTCOME Reached
TARGET CheckStatus
BUTTON No, call back later
TARGET Callback
CONDITION CheckStatus
WHEN {{#or (eq person.custom_fields.[member status text] "Active") (eq person.custom_fields.[member status text] "Contingent") }}true{{/or}}
THEN ActiveMemberPath
WHEN {{#eq person.custom_fields.[member status text] "Inactive" }}true{{/eq}}
THEN InactiveMemberPath
WHEN {{#eq person.custom_fields.[member status text] "New"}}true{{/eq}}
THEN NewMemberPath
ELSE GeneralOutreach
NODE ActiveMemberPath
PROMPT
Great! I see you're an active member at {{person.employer}} in the {{person.department}} department.
We're reaching out about our upcoming contract negotiations.
Your job title is listed as {{person.job_title}} - is that still accurate?
Are you interested in getting involved?
BUTTON Yes, I'm interested
TARGET CommitteeSignup
BUTTON Tell me more
TARGET ExplainCampaign
BUTTON Not right now
TARGET Thanks
NODE InactiveMemberPath
PROMPT
Hi {{person.first_name}}, we noticed you haven't been active recently with the union.
We'd love to reconnect!
What's been going on?
BUTTON Work schedule conflicts
TARGET ScheduleConflict
BUTTON Lost interest
TARGET ReengageInterest
BUTTON Just haven't had time
TARGET TimeConstraints
NODE NewMemberPath
PROMPT
Welcome {{person.first_name}}!
We're excited to have you as a member. Let me tell you about what we're working on.
NEXT NewMemberInfo
NODE GeneralOutreach
PROMPT
Thanks for taking my call, {{person.first_name}}.
We're reaching out to members at {{person.employer}} about our current campaign.
Would you like to hear more?
BUTTON Yes
TARGET ExplainCampaign
BUTTON Not interested
TARGET Thanks
NODE ScheduleConflict
PROMPT I understand. We have flexible ways to stay involved. Would you be interested in attending our next meeting if we could find a time that works for you?
BUTTON Yes
TARGET ScheduleMeeting
BUTTON No
TARGET Thanks
NODE ReengageInterest
PROMPT
I appreciate your honesty.
Things have changed since you were last involved. We're now focused on {{person.custom_fields.[current campaign text]}}.
Does that sound interesting?
BUTTON Yes, tell me more
TARGET ExplainCampaign
BUTTON No
TARGET Thanks
NODE TimeConstraints
PROMPT I get it—life is busy! We have short-term projects you could help with. Would you be interested in volunteering for just a few hours?
BUTTON Yes
TARGET VolunteerOpportunities
BUTTON No
TARGET Thanks
NODE CommitteeSignup
PROMPT Excellent! We're building a {{person.job_title}} committee to lead our efforts. Would you be interested in joining?
BUTTON Yes
TARGET LeadershipPath
BUTTON Maybe
TARGET MoreInfo
NODE LeadershipPath
PROMPT That's fantastic! I'm marking you as a potential leader. Someone will contact you within 48 hours with details.
CUSTOM FIELD leadership interest text
BUTTON Confirm interest
OUTCOME Leadership Interest
TARGET Thanks
NODE ExplainCampaign
PROMPT
We're working to improve wages, benefits, and working conditions.
Your {{person.department}} department has been particularly vocal about {{person.custom_fields.[department priority issue text]}}.
We'd love your input as someone who works as a {{person.job_title}}.
BUTTON I want to help
TARGET CommitteeSignup
BUTTON I want to learn more first
TARGET MoreInfo
BUTTON Not interested
TARGET Thanks
NODE MoreInfo
PROMPT What questions do you have?
CUSTOM FIELD questions text
BUTTON Continue
TARGET AnswerQuestions
NODE AnswerQuestions
PROMPT [Caller answers based on member's questions]. Does that help clarify things?
BUTTON Yes, I'm interested
TARGET CommitteeSignup
BUTTON I need to think about it
TARGET ThinkAbout
BUTTON No thanks
TARGET Thanks
NODE ThinkAbout
PROMPT That's completely understandable. Can we follow up in a few days?
BUTTON Yes
TARGET FollowUp
BUTTON No
TARGET Thanks
NODE FollowUp
PROMPT Perfect. What's the best way to reach you?
CUSTOM FIELD preferred contact method text
BUTTON Schedule
OUTCOME Follow-up Scheduled
TARGET Thanks
NODE VolunteerOpportunities
PROMPT Great! We have a data entry project coming up next weekend that would take about 4 hours. Interested?
BUTTON Yes
TARGET VolunteerSignup
BUTTON Tell me about other opportunities
TARGET OtherOpportunities
NODE VolunteerSignup
PROMPT Perfect! I'm signing you up. You'll get details via {{person.custom_fields.[preferred contact method text]}}.
BUTTON Confirm signup
OUTCOME Volunteer Signup
TARGET Thanks
NODE OtherOpportunities
PROMPT We also need help with phone banking, social media, and event planning. Which interests you?
BUTTON Phone banking
TARGET PhoneBankingSignup
BUTTON Social media
TARGET SocialMediaSignup
BUTTON Event planning
TARGET EventPlanningSignup
NODE PhoneBankingSignup
PROMPT Excellent! Phone banking is crucial to our campaign.
BUTTON Sign up
OUTCOME Volunteer - Phone Banking
TARGET Thanks
NODE SocialMediaSignup
PROMPT Great! We need people to help spread the word online.
BUTTON Sign up
OUTCOME Volunteer - Social Media
TARGET Thanks
NODE EventPlanningSignup
PROMPT Perfect! We're planning several events over the next few months.
BUTTON Sign up
OUTCOME Volunteer - Event Planning
TARGET Thanks
NODE ScheduleMeeting
PROMPT When would work best for you?
CUSTOM FIELD preferred meeting time text
NEXT Thanks
NODE NewMemberInfo
PROMPT We're currently focused on contract negotiations and building member engagement. Would you like to get involved?
BUTTON Yes
TARGET CommitteeSignup
BUTTON Maybe
TARGET MoreInfo
BUTTON No
TARGET Thanks
NODE Thanks
PROMPT Thank you {{person.first_name}}! We appreciate your time. Feel free to reach out anytime.
END
NODE Callback
PROMPT When would be a better time to reach you?
CUSTOM FIELD callback time text
BUTTON Schedule callback
OUTCOME Callback Requested
TARGET Thanks
```
**Key Features**:
* **Advanced CONDITION logic**:
* Basic CONDITION with simple equality check
* OR logic to match multiple member statuses
* AND logic to combine multiple conditions (inactive AND not contacted recently)
* Extensive HTML/CSS styling throughout prompts
* Multiple custom field variables:
* Built-in fields (`{{person.employer}}`, `{{person.department}}`, `{{person.job_title}}`)
* Custom text fields (`{{person.custom_fields.[member status text]}}`, `{{person.custom_fields.[current campaign text]}}`)
* Personalized routing based on member data
* Dynamic messaging using person variables
* GeneralOutreach ELSE path for unmatched conditions
***
## Troubleshooting
### Script validation errors
#### Error: "Node 'NodeName' does not exist"
**Cause**: A button's `TARGET` references a node that doesn't exist.
**Example**:
```ruby theme={null}
BUTTON Continue
TARGET NextNode ← NextNode is not defined anywhere
```
**Solution**:
1. Find where the node is referenced
2. Either create the missing node or change the target to an existing node
```ruby theme={null}
BUTTON Continue
TARGET ThankYou ← Changed to existing node
```
***
#### Error: "Duplicate node name"
**Cause**: Two nodes have the same name.
**Example**:
```ruby theme={null}
NODE Start
PROMPT Hi there!
NODE Start ← Duplicate!
PROMPT Welcome!
```
**Solution**: Rename one of the nodes to be unique.
```ruby theme={null}
NODE Start
PROMPT Hi there!
NODE Welcome
PROMPT Welcome!
```
***
#### Error: "Missing PROMPT in node"
**Cause**: A node exists without a PROMPT statement.
**Example**:
```ruby theme={null}
NODE MyNode
BUTTON Continue
TARGET NextNode
```
**Solution**: Add a PROMPT.
```ruby theme={null}
NODE MyNode
PROMPT Please answer the question below.
BUTTON Continue
TARGET NextNode
```
***
## Creating and Managing Scripts
### Step-by-Step: Creating a Script
1. **Navigate to script page**
* Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Scripts**
* Click **New call script**
2. **Name your script**
* Enter a descriptive name (e.g., "GOTV 2024", "Member Survey Fall", "Pledge Card Collection")
* Use names that make it clear what the script is for
3. **Write your BCSS code**
* In the BCSS editor, write your script using the syntax covered above
* Start with a simple flow and add complexity gradually
* Use the example scripts as templates
4. **Validate your script**
* Click **Validate** to check for syntax errors
* Fix any errors shown in red
* Common errors:
* Missing node names
* Duplicate node names
* Buttons pointing to non-existent nodes
* Missing PROMPT in a node
5. **View the flow chart**
* Click **Flow Chart** to see a visual representation
* This helps identify logic errors or dead ends
* Ensure all paths lead to either OUTCOME or DEAD END
6. **Save as draft**
* Click **Save** to save your script
7. **Test your script**
* Before activating, test the script with a small call pool
* Have callers walk through different paths
* Collect feedback on clarity and flow
***
## Best practices
**1. Start with a clear goal**
Before writing a single line, answer:
* What information do I need to collect?
* What action do I want people to take?
* How will I use the outcomes for follow-up?
**2. Keep it conversational**
Write how you speak:
* ❌ "Greetings. I am inquiring as to your availability for union participation."
* ✅ "Hi! Do you have a few minutes to talk about union activities?"
**3. Respect people's time**
* State the purpose upfront
* Offer an easy exit ("Is now a good time?")
* Keep scripts under 5-10 minutes when possible
* Don't collect data you won't use
**4. Provide clear options**
Every node should have obvious next steps:
* ❌ "What do you think?"
* ✅ Clear buttons: "Very interested", "Somewhat interested", "Not interested"
**5. Plan for all responses**
Include paths for:
* Enthusiastic supporters
* Undecided people
* Those who say no
* People who want callbacks
* Those who ask to be removed from lists
**6. Test before launching**
* Walk through every possible path
* Have a colleague test it
* Do a pilot with 5-10 friendly contacts
* Fix issues before full rollout
**7. Iterate based on feedback**
* Debrief with callers after phone banks
* Ask what was confusing
* Look at where people got stuck (check call duration)
* Update scripts between campaigns
***
### Best practices for script design
**Keep it conversational**
* Write prompts the way you would naturally speak
* Avoid overly formal or robotic language
* Example: "Hi Maria" not "Greetings, Ms. Garcia"
**Provide clear options**
* Button text should make the outcome obvious
* Bad: "Option A", "Option B"
* Good: "Yes, I'm interested", "No, not interested"
**Plan for all scenarios**
* Include options for "I don't know", "Call me back", "Remove from list"
* Don't force people into binary choices when their situation might be more complex
**Collect only necessary data**
* Every field you add increases call time
* Focus on the most important information
* You can always follow up later
**Use variables to personalize**
* Including the person's name and workplace makes the conversation feel more genuine
* Example: "Hi `{{person.first_name}}`, this is `{{caller.name}}` from the union"
**Test different paths**
* Walk through your script as if you were different types of contacts
* Ensure positive, negative, and neutral paths all make sense
**Plan your outcomes**
* Think about how you'll use outcome data for follow-up
* Create specific enough outcomes to guide next steps
* Example: "Strong Support - Committee Interest" vs just "Completed"
### Managing script versions
**Editing active scripts**
* You can edit an active script, but changes affect all future calls immediately
* If making major changes, consider creating a new version instead
**Disabling scripts**
* To disable a script, uncheck **Active** in the **Scripts** tab of the Call Center settings page.
* Disabled scripts will disable call pools that use them.
***
# Using the Call center
Source: https://help.broadstripes.com/docs/admin-guides/call-center/using-call-center
## Overview
The Broadstripes CRM Call Center is a powerful phone banking system designed specifically for labor organizing campaigns. It enables your team to conduct structured phone conversations with workers, collect data in real-time, track outreach progress, and measure campaign effectiveness—all while maintaining detailed records of every interaction.
Whether you're running a Get Out The Vote (GOTV) campaign, conducting member surveys, collecting pledge cards, or building your organizing committee, the Call Center feature provides the tools you need to run efficient, data-driven phone banks with:
## What you can do with the Call center
The Call Center enables you to:
* **Run organized phone banks** with customizable conversation scripts
* **Collect data during calls** using custom fields, event steps, and assessments
* **Track call outcomes** to measure campaign effectiveness
* **Send SMS messages** directly from the calling interface
* **Manage caller workflows** with random queues or targeted List call pools
* **View historical data** about previous calls and interactions
* **Handle authentication** for sensitive operations like ratification votes
* **Generate reports** on call completion rates, outcomes, and data collected
* **Coordinate multiple callers** with automatic call locking to prevent duplicates
***
### Getting Started: Understanding the Call Center
Before diving into setup, let's understand the three main components:
#### 1. [Scripts](/docs/admin-guides/call-center/creating-call-center-script)
Think of a script as a **choose-your-own-adventure guide** for phone conversations. It contains:
* Questions to ask
* Response options
* What to say next based on the answer
* Information to collect
**Example**: A ratification vote script might ask "Will you vote Yes on the contract?" with buttons for Yes/No/Undecided, then route to different follow-up questions based on the response.
#### 2. [Call Pools](/docs/admin-guides/call-center/using-call-pools)
A Call Pool is a **list of people to call** plus the configuration for how calling should work. Think of it as:
* The contact list (who to call)
* The script to use (what to say)
* Access rules (who can call, when)
* Calling style (random queue vs. choosing from a list)
**Example**: "2025 Contract Ratification Pool" containing 500 members, using the "Ratification Script," open from May 1-15.
#### 3. [The Caller Interface](/docs/communications/making-calls)
This is the **web-based phone banking interface** where callers:
* See who to call next
* Follow the script
* Mark phone numbers as good or bad
* Record responses
* Move to the next call
***
## Setting up data for the call center
##### Marking fields "Display in Call Center"
When you create or edit a custom field, you can check "Display in Call Center":
**Effect**:
* Field appears in the header during calls
* Callers can see the current value
* Helps provide context
**Use Cases**:
* Display shift information so callers know when the person works
* Show previous survey responses
* Confirm person via external system IDs
You may also mark external systems "Display in Call Center" to display external system IDs during calls.
##### Collecting vs. displaying
* **Display only**: Check "Display in call center" but don't include in script
* **Collect during call**: Include `CUSTOM FIELD` in script
* **Both**: Check "Display in call center" AND include in script (caller can see existing value before updating it)
##### Assessment codes display and editing
Assessment codes rank organizing/support strength (usually on a 0-5 scale).
These settings control how assessment codes are displayed and edited in the Call Center (located on the Other Settings tab of the Call Center settings):
* **Display code in the Call Center**: Displays current assessment code, read-only
* **Enable editing of code in the Call Center**: Allows callers to update assessment codes
**When to Use**:
* Organizing campaigns where caller judgment matters
* Assessing member engagement levels
* Identifying leaders and organizers
**Best Practices**:
* Train callers on what each code means
* Provide clear guidelines for updates
* Review changes regularly for consistency
* Use in conjunction with call outcomes for better tracking
***
## Call locks and concurrency
Call locks prevent multiple callers from calling the same person simultaneously.
**How it works**:
1. Caller starts a call
2. System creates a lock on that person (lasts 30 minutes)
3. Other callers can't call that person during the lock (not applicable to List call pools)
4. Lock releases when:
* Call is completed
* Call is skipped
* Caller ends session
* Project admin manually releases the lock in the call center settings
A project admin can manually release a lock on the **Locks** tab in the call center settings.
To release a lock, click the **•••** menu next to the caller's name and choose **Delete**. You can also bulk-release locks by checking the boxes next to the rows you want to clear and clicking the **Delete** button at the top of the table.
**Why it matters**:
* Prevents embarrassing duplicate calls ("Someone else just called me!")
* Ensures data integrity (no conflicting updates)
* Improves caller efficiency (no wasted time on already-called people)
**Handling lock errors**:
**In random pools**:
* If the next person is locked, system automatically skips to the next available person
* Caller doesn't see the lock
**In List call pools**:
* Locked people display a **Locked** status badge in the Status column
* Clicking them shows: "This person is currently being called by another volunteer"
* Choose a different person
In a List call pool, the lock can be overridden by the caller.
***
## Call Outcomes and Tracking
#### Understanding Outcomes
Call outcomes categorize how each call ended. They're essential for follow-up, reporting, and measuring campaign effectiveness.
##### Standard Outcomes
These are automatically set based on how the call progresses:
**"Reached"**: Person answered and participated (generic outcome if script doesn't set a specific one)
**"Skipped"**: Caller clicked "Skip this person"
**"Interrupted"**: Call was disconnected or interrupted
##### Custom Outcomes
Scripts define custom outcomes using `OUTCOME`:
```
NODE Success
PROMPT Thank you for your support!
BUTTON Will Volunteer
OUTCOME Will Volunteer
TARGET Schedule Training
BUTTON Will Not Volunteer
OUTCOME Won't Volunteer
TARGET Goodbye
```
The text after `OUTCOME` becomes the outcome.
Calls that are marked with a Completed `OUTCOME` are not queued to be called again in a random pool using the same call script.
**Completed Outcomes** mark calls as finished and prevent people from being called again in the same random pool. You define these on the **Other settings** tab of the Call Center settings page.
When setting up your outcomes, distinguish between two types:
* **Add to "Completed Outcomes"**: Outcomes that mean "don't call again" (e.g., "Already Voted", "Not Eligible", "Declined")
* **Don't add to "Completed Outcomes"**: Outcomes that mean "try again" (e.g., "Left Voicemail", "No Answer", "Call Back Later")
**Plan for follow-up**:
Your outcomes should guide next steps:
| Outcome | Follow-Up Action |
| ---------------------- | -------------------------------- |
| Strong Support | Add to organizing committee list |
| Undecided - Needs Info | Send informational email |
| Callback Requested | Schedule follow-up call |
| Do Not Call | Remove from future pools |
| Already Voted | No action needed |
##### Outcome reporting
Use outcomes to:
**Measure campaign success**:
* "What percentage of calls resulted in 'Strong Support'?"
* "How many pledge cards were collected?"
* "What's our GOTV contact rate?"
**Segment for follow-up**:
* Search for people with outcome "Callback Requested"
* Create new pool of people with outcome "Undecided - Needs Info"
**Identify issues**:
* High "Wrong Number" rate → Need better phone data
* Lots of "No Answer" → Try different calling times
***
## Troubleshooting
#### Permission issues
**Error: "You don't have permission to access call center"**
**Cause**: Call Center feature not enabled for the project.
**Solution**: Contact Broadstripes support
***
**Error: "You don't have permission to create call pools"**
**Cause**: User doesn't have **Can manage own call pools** permission.
**Solution**: project admin needs to:
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**) and choose **Members**
2. Edit your user membership
3. Check "Can manage own call pools"
4. Save
***
**Problem: "No one available to call"**
**Possible causes**:
1. Everyone has been called already
2. Everyone is currently locked by other callers
3. People were removed from the pool
**Solutions**:
* Check how many people are in the pool
* If certain a person should not be locked, contact your project admin to unlock them
* Add more people to the pool
***
##### Person locked errors
**Error: "This person is currently locked by the call center"**
**Cause**: Someone else is calling this person right now, or the lock hasn't expired from a previous call.
**Solution**:
* **List call pools**: Choose a different person
* **Random pools**: System automatically skips to next person
* **If it persists**: Contact your project admin (locks can be manually cleared)
***
#### Session issues
**Problem: "Session timeout"**
**Cause**: No activity for extended period (usually 30+ minutes of inactivity).
**Solution**:
1. You'll be logged out automatically
2. Click the call pool link again
3. Your caller information should be remembered
4. Start calling again
**Prevention**:
* Don't leave the page idle for long periods
* Complete or skip calls rather than leaving them open
* End your session if taking a break
***
**Problem: "Lost my place in the script"**
**Cause**: Page refresh, browser back button, or navigation error.
**Solution**:
* Click "Go back" button repeatedly to return to the start
* Data entered before the error may be lost
**Prevention**:
* Avoid using browser back/forward buttons
* Use the script's "Go back" button instead
* Don't refresh the page during calls
***
#### SMS sending problems
**Error: "No outgoing SMS number is available"**
**Cause**: Project doesn't have any active SMS phone numbers provisioned.
**Solution**:
* **Immediate**: Skip the SMS portion and continue the call
* **Long-term**: Contact project admin to provision a virtual phone number
***
**Error: "Unable to send message"**
**Possible causes**:
1. Person's number doesn't support SMS
2. Number is landline (no SMS capability)
3. Network connectivity issue
**Solution**:
* Try one more time
* If it fails again, skip the SMS and continue
* Make a note that SMS couldn't be sent
* Complete the call normally
***
**Error: "No cell phone available for SMS"**
**Cause**: Person doesn't have a cell phone number in their record.
**Solution**:
* This is expected behavior
* You can't send SMS to landlines
* Skip the SMS portion
* Continue with the rest of the script
***
## Campaign Optimization
**1. Track Key Metrics**
Monitor daily:
* Contact rate (% of calls where you reach someone)
* Completion rate (% of people who go through full script)
* Outcome distribution (are you getting the results you want?)
* Average call duration (if it's growing, script might be too long)
**2. Optimize Calling Times**
Test different times:
* Weekday evenings (6-8pm)
* Weekend mornings (10am-12pm)
* Weekend afternoons (1-4pm)
Track when you get the best contact rates and adjust.
**3. Segment Your Targets**
Don't treat everyone the same:
* Past supporters get different scripts than cold contacts
* Active members vs inactive members
* Different departments or worksites might need tailored approaches
**4. Follow Up Promptly**
Use outcomes to drive follow-up:
* Call "Callback Requested" people within 24-48 hours
* Email "Wants More Info" people immediately
* Move "Strong Support" people to action lists
**5. Celebrate Progress**
Share results with callers:
* "We've contacted 500 people this week!"
* "75% of people we've reached support the contract!"
* "You collected 50 pledge cards - amazing work!"
This keeps volunteers motivated.
***
## Tips for Labor Organizing Use Cases
##### GOTV (Get Out The Vote) Campaigns
**Strategy**:
* Call 3 times: 1 week out, 3 days out, day before
* Use List call pools for known supporters
* Use Random pools for broader universe
* Focus on vote plan (when, where, how)
**Script Tips**:
* Lead with election date: "Election day is Tuesday, November 5th"
* Confirm voting plan: "What time will you vote?"
* Send SMS reminders with polling location
* Track who already voted to avoid repeat calls
**Metrics to Track**:
* % with firm vote plan
* % supporting endorsed candidates
* % who already voted
* Callback success rate
***
##### Member Engagement and Check-Ins
**Strategy**:
* Regular touchpoints (quarterly or semi-annually)
* Build relationships, not just data collection
* Identify issues early
* Recruit volunteers
**Script Tips**:
* Start personal: "How have things been at work?"
* Ask open-ended questions
* Listen more than talk
* End with "How can the union help?"
**What to Track**:
* Workplace issues identified
* Member satisfaction trends
* Volunteer interest
* Communication preferences
***
##### Issue Surveys and Bargaining Prep
**Strategy**:
* Survey before bargaining begins
* Prioritize issues by frequency and intensity
* Use data to build bargaining strategy
* Report results back to members
**Script Tips**:
* "What's the most important issue for you?"
* "Rate this issue 1-10 in importance"
* "Would you support union action on this?"
* Collect specific examples and stories
**Data to Collect**:
* Issue categories (wages, safety, schedule, etc.)
* Severity ratings
* Willingness to act
* Department/worksite breakdowns
***
##### Pledge and Card Collection
**Strategy**:
* Warm leads first (previous supporters)
* Follow up quickly on "yes" responses
* Multiple options (in-person, mail, electronic)
* Track signatures rigorously
**Script Tips**:
* Social proof: "Over 60% of your coworkers have signed"
* Address concerns immediately
* Multiple ask strategy (if no, ask for meeting)
* Confirm contact info for follow-up
**Track Carefully**:
* Who committed to sign
* Method (in-person, mail, electronic)
* Follow-up needed
* Actual signatures received
***
##### Strike Preparation and Mobilization
**Strategy**:
* Assess support levels
* Identify commitments
* Build strike teams
* Plan communication chains
**Script Tips**:
* Gauge commitment: "Would you walk a picket line?"
* Identify leaders: "Would you help organize others?"
* Practical planning: "What shift can you cover?"
* Address concerns seriously
**Critical Data**:
* Strike support levels
* Volunteer commitments
* Shift coverage availability
* Concerns or barriers
* Alternative contact methods (in case work numbers don't work)
***
## Frequently Asked Questions
**Q: Can I call the same person from multiple pools?**
A: Yes. Locks prevent simultaneous calls, but the same person can be in multiple pools (if the scripts are different) and can be called at different times. However, be mindful of over-calling - check call history before adding someone to a new pool.
***
**Q: What happens if I accidentally skip someone?**
A: They're marked as skipped with outcome "Skipped", but only the caller who skipped them is excluded from reaching them again in the current session. Other callers will still get the person through the Random pool's regular rotation, and the original caller will be eligible to reach them in a later session. In a List call pool, any caller can manually re-select the person right away.
***
**Q: Can I pause in the middle of a call and come back later?**
A: Not reliably. The session has a timeout (typically 30 minutes of inactivity). If you need a break, complete the current call first, then take your break before starting the next call.
***
**Q: How long are call records kept?**
A: Indefinitely. All call history, outcomes, and data collected are permanent records. This is important for campaigns that span months or years.
***
**Q: What if someone speaks a different language?**
A: You can create scripts in multiple languages. Either:
1. Create separate pools by language preference
2. Have bilingual callers who can switch
3. Use conditional logic to offer language choice
Example:
```
NODE LanguageChoice
PROMPT Hello / Hola
BUTTON English
TARGET EnglishScript
BUTTON Español
TARGET SpanishScript
```
***
**Q: Can I see other callers' progress in real-time?**
A: Project admins can see overall progress but not live call-by-call details. Privacy and security limit real-time monitoring. Check pool reports for aggregate stats.
***
**Q: What happens if two people try to call the same person at exactly the same time?**
A: The call locking system handles this. The first person to start the call gets the lock. The second person is either:
* Automatically skipped to the next person (Random pools)
* Shown a lock icon (List call pools)
***
**Q: Can I edit a script while people are using it?**
A: Technically yes, but not recommended. Changes take effect immediately and could confuse active callers. Best practice:
1. Create a new version of the script
2. Create new pools with the new script
3. Let existing pools finish with the old script
***
**Q: Can I assign specific people to specific callers?**
A: Not directly in Random pools, but yes in List call pools. List call pools let callers choose, so you can:
1. Create a List call pool
2. Give different callers different lists/priorities
3. Train them to prioritize certain people
***
**Q: What if the script doesn't cover a situation that comes up?**
A: Use your judgment:
1. Handle the situation professionally
2. Use supplemental notes to record what happened
3. Complete the call with the closest applicable outcome
4. Report to project admin so the script can be updated
**Example**: Person mentions they're moving out of state. There's no script path for this, but you'd:
* Thank them for their time
* Make a note in supplemental field
* Mark as "Other - Moving Out of State"
* Report so they can be removed from future campaigns
***
**Q: What should I do if I accidentally mark a good number as bad?**
A: Click the toggle again immediately to unmark it. If you've already completed the call, contact your project admin - they can correct it in the app.
***
# Using call pools
Source: https://help.broadstripes.com/docs/admin-guides/call-center/using-call-pools
Create and manage call pools for phone bank campaigns, including pool types, status tracking, and scheduling.
Call pools are groups of people who will be called using a specific script. Think of them as "phone bank lists" with rules about how people get called.
### Understanding pool types
#### Random pools (Default)
**How they work**:
* System automatically selects the next person for each caller
* Each person is called once per caller
* People are locked while being called to prevent duplicates
* Callers don't see who's next until the call starts
**Best For**:
* Large-scale outreach where every contact is equally important
* GOTV campaigns
* General surveys
* Situations where you want to prevent caller bias in selecting contacts
**Example**: You have 500 members to call for a contract vote. You want each person called exactly once in random order.
#### List call pools
**How they work**:
* Callers see a full list of everyone in the pool
* Callers choose who to call from the list
* Still includes call locking to prevent duplicates (Caller can override in a List call pool)
* List can be sorted and filtered
**Best For**:
* Targeted calling where caller judgment matters
* Follow-up calls
* VIP or leadership outreach
* Situations where callers need to see context (e.g., previous call outcomes)
**Example**: You have 50 shop stewards to call with important updates. Callers know the stewards personally and can prioritize who to reach first.
##### Session metrics dashboard
When a caller opens a List call pool, a metrics dashboard appears above the target list. It gives callers a running view of their own activity and the pool's overall progress, so they can see at a glance how the campaign is going while they work.
The dashboard has three sections:
* **Your calls** (left) shows the current caller's activity:
* **this session** — calls placed since starting the current session
* **today** — calls placed by this caller in this pool today (across all sessions)
* **total placed** — calls placed by this caller in this pool, all time
* **Pool / Script** (center) names the call pool and call script, and shows a progress bar that breaks the pool down by call status (the same statuses described in the [Call pool status column](#call-pool-status-column) below — Completed, Call back / follow-up, and Call / to call).
* **All calls** (right) shows the pool's totals across every caller:
* **people** — total people in the pool
* **calls placed** — calls placed in this pool by all callers combined
* **completed** — calls that reached a completion outcome
The metrics are loaded when the page opens and refresh as the session progresses, so reloading the list or returning to it after a break shows the latest numbers.
##### Call pool status column
In a List call pool, each person in the list displays a **Status** badge that shows their current call progress. The status is determined by the person's call history with the pool's script.
| Status | Description |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Call** | The person has not been called yet for this script. Click the badge (or the **Start** button on the right) to start the call. |
| **Follow-up** | The person has been called, but the call outcome does not match any of the script's configured completion outcomes (e.g., the call went unanswered or needs another attempt). Click the badge to call again. |
| **Complete** | The person has been called and the outcome matches one of the script's completion outcomes. This is a non-clickable badge. |
| **Locked** | Another caller is currently on the line with this person. This badge clears automatically when the other caller finishes. |
By default, the list shows only people with **Call** and **Follow-up** statuses. Use the status filter to show **Complete** or **Locked** people as well.
The session metrics dashboard's progress bar (above the list) provides a visual summary of how many people in the pool fall into each status.
##### Call history panel
The list view also includes a call history panel that shows recent call activity for each contact in the pool. Use it to see at a glance who has been called, when, and what happened — without having to open each contact's full record.
For each person in the list, the panel surfaces:
* **Recent call attempts** for the pool's script, with the date and time of each attempt
* **The outcome** of each call (for example, the response chosen by the caller, whether the call was completed, or whether it needs follow-up)
* **The caller** who made the attempt
This is especially useful in List call pools where callers choose who to dial next:
* **Avoid calling someone twice in a row** by checking whether they were just contacted by another caller.
* **Prioritize call-backs** by spotting people whose last attempt did not reach a completion outcome.
* **Coordinate across volunteers** so that conversations build on what has already been said rather than starting over.
The history panel updates as calls are completed in the pool, so refreshing the list view shows the latest activity.
#### Authenticated pools
**How they work**:
* Additional verification step before calling begins
* Used for sensitive or official processes
* Can include password protection
* Often tied to specific custom fields (like "Ratification Vote")
**Best For**:
* Contract ratification votes
* Officer elections
* Sensitive surveys
* Any situation requiring verified identity
**Example**: Contract ratification vote where each member gets one verified vote recorded.
**Reach out to Broadstripes support for more information on authenticated pools.**
### Creating a call pool
1. **Search for people**
* Go to **Search** and find the people you want to call
* Use search filters to target specific groups
* Example: `department:Warehouse shift:Night`
2. **Select people**
* Click **Select All** or individually check people
3. **Create pool**
* Go to **Communications → Create call pool**
4. **Configure basic settings**
* **Call pool name**: Descriptive name (e.g., "Warehouse Night Shift - GOTV Week 1")
* **Choose a call script**: Select from your active scripts
5. **Choose pool type**
* Check "Allow callers to see pool as list and make calls at will" for List call pool (Leave unchecked for Random pool)
6. **Add password** (Optional)
* For restricted access pools
* Callers must enter password to start calling
7. **Create pool**
* Click **Create call pool**
* System generates a unique link
8. **Share the link**
* Copy the provided link
* Share with your phone bank volunteers
### Edit existing call pools
1. Open the call pool list. Either click **Call pools** () in the left sidebar, or open the settings gear (**Project settings**) in the upper right and choose **Call pools** under **Call Center**. Both open the **Call Center settings** page with the **Pools** tab active.
2. Find the pool you want to edit
3. Click the **•••** menu next to the pool name. Choose **Copy call pool link** to grab the shareable URL, **Edit** to open the pool's edit page, or **Delete** to remove the pool.
You can also delete a call pool by selecting the checkbox next to the pool and clicking the **Delete** button at the top of the page.
4. On the edit page, you may:
* Edit the pool name
* Disable the call pool
* Edit the pool type
* Change the call script
* Update the password
* Set a **Caller page title** and **Caller greeting** (see below)
* Set a start and end date for the pool
5. Make your changes and click **Save**
**Caller page title** sets the browser tab title callers see when they open your call pool link. Leave it blank to use the default title. This applies to all pool types.
**Caller greeting** (authenticated pools only) sets the introductory text shown on the sign-in page above the entry form. Leave it blank to use the default greeting.
**Set schedule** (Optional)
A project admin can set a start and end date for the pool in the Call Center settings page. This will prevent callers from starting the pool before the start date or ending the pool after the end date.
Click edit on the pool's row on the **Pools** tab to set the start and end date. *(Type "Call pools" in the settings gear menu to find it.)*
* **Use start date/time**: When the pool becomes available
* **Start message**: Shown to callers before the pool opens
* **Use end date/time**: When the pool closes
* **End message**: Shown after the pool closes
* **Time zone**: Important for multi-timezone campaigns
### Adding and removing people from pools
**Adding people to an existing pool**
1. Search and select the people you want to add
2. Go to **Communications → Add to call pool**
3. Choose the existing pool from the dropdown
4. Click **Add**
5. The people are immediately available for calling
**Use Case**: You created a GOTV pool with 500 people, but then identified 50 more voters who should be included.
**Removing people from a pool**
1. Search and select the people you want to remove
2. Go to **Communications → Remove from call pool**
3. Choose the pool
4. Click **Remove**
5. The people are immediately removed (even if currently being called)
**Use Case**: Someone already voted early, so you remove them from the GOTV pool.
### Managing multiple call pools
You can run multiple pools simultaneously:
* **Different scripts**: One pool for GOTV, another for member surveys
* **Different target groups**: One pool for members, another for non-members
* **Different campaigns**: One pool per worksite or department
* **Sequential pools**: Create new pools as campaigns progress
**Example setup**:
* "GOTV Week 1 - High Priority" (List call pool, 200 people)
* "GOTV Week 1 - General" (Random pool, 1,800 people)
* "Member Check-in - Warehouse" (Random pool, 500 people)
### Call pool scheduling
**Setting start times**
**Why use it**:
* Coordinate phone banks across time zones
* Prevent callers from starting too early
* Align with campaign launch times
**Example**:
* **Start date**: November 1, 2024
* **Start time**: 5:00 PM
* **Time zone**: Eastern
* **Start message**: "Thank you for volunteering! This phone bank opens at 5pm Eastern time. Please return after 5pm to begin calling."
**Setting end times**
**Why use it**:
* Respect calling hours (e.g., no calls after 9pm)
* Close pools when campaigns end
* Ensure accurate reporting periods
**Example**:
* **End date**: November 5, 2024
* **End time**: 9:00 PM
* **Time zone**: Eastern
* **End message**: "This phone bank has closed. Thank you for your hard work! Check back for future calling opportunities."
***
### Call pool strategy
**1. Size your pools appropriately**
**Small pools** (\< 100 people):
* Use List call pools for more control
* Good for targeted follow-up
* Personal touch important
**Medium Pools** (100-1,000 people):
* Random pools work well
* Consider splitting by geography or demographic
* Monitor daily progress
**Large Pools** (1,000+ people):
* Random pools are essential
* Break into multiple pools by priority
* Assign dedicated project admins
**2. Prioritize contacts**
Create multiple pools:
1. "High Priority" (List) - VIPs, leaders, known supporters
2. "Medium Priority" (Random) - Members, past participants
3. "Low Priority" (Random) - Cold contacts, wide outreach
Call high-priority pools first.
**3. Refresh Pools Regularly**
* Remove people who've been called
* Add newly identified contacts
* Update as campaign progresses
* Don't let pools grow stale
**4. Name Pools Clearly**
Good naming:
* "GOTV 2024 - Week 1 - High Priority"
* "Member Survey - Oct"
* "Pledge Cards - North Side - Evening"
Bad naming:
* "Pool 1"
* "Test"
* "Calling list"
**5. Set Realistic Schedules**
* Don't start too early (before 9am)
* Don't end too late (after 9pm)
* Consider time zones
* Respect calling hour norms
***
# Assessment codes
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/assessment-codes
Configure assessment codes to track where workers stand in relation to your organizing campaign goals using numeric scales.
## Overview
An essential piece of any organizing campaign is figuring out where the workers stand in relation to the campaign's goals.
This is usually done using a numeric assessment scale, with 1 indicating strong support, and the highest number in the scale (usually 5) indicating hostility. The 5-point scale is useful because it gives you a neutral position (3) and two "leaning" options (2 and 4).
Broadstripes makes it easy to set up assessment codes to match your campaign's style. You can create as many codes as you want, and supply descriptive text for each.
**What's the difference between "Assessment codes," "Assessments," and "Codes"?**
Absolutely nothing! "Assessment codes," "Assessments," and "Codes" all refer to the exact same piece of employment information in Broadstripes; it's just a matter of how it is labeled.
In your [general settings](/docs/project-settings/general-settings), you can choose whether you want Broadstripes to refer to the numbers on the assessment scale as "Codes" or "Assessments," and you can go back to your general settings to change this label at any time.
## The assessment codes table
The assessment codes page displays your codes in an interactive data grid with sortable, filterable columns:
* **#** — The code number, shown as a colored circle
* **Name** — The code description, with an actions menu (⋯) for editing and deleting
* **Default** — A checkbox indicating the default code; click it to set or clear the project default directly in the table
* **Contacts** — The number of contacts assigned this code (click to view them in search results)
* **Created** and **Created by** — When the code was created and who created it
You can click any column header to sort, and use the filter row below the headers to narrow down codes. The table also includes **Export** buttons to download your codes as a file.
## Configure new assessment codes
You can create your whole assessment scale in one step:
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Assessments** (or **Codes**, depending on your [General settings](/docs/project-settings/general-settings) label).
2. Click the **New\...** button in the table toolbar. The **New assessments** dialog opens with one empty row.
3. Each row is one assessment code. Enter a **number** and a short one- or two-word **label** that will appear on-screen and in reports (most projects use codes 1-5, but you can have as many or as few as you want).
**Note:** Assessment codes must be numbers, and each number can only be used once — the dialog flags duplicates as you type.
4. Click **+ Add another assessment** to add a row for each remaining code on your scale.
5. If you want one code to be selected automatically when your end users enter a new contact in Broadstripes, click the **Default** button on its row.
6. To color your scale, pick one of the **Suggested Palettes** (Classic, Ocean, Sunset, Earth, or Mono) — the swatches preview how the colors will be spread across your codes. You can fine-tune individual colors later; see [Customize assessment colors](#customize-assessment-colors).
7. Click **Create assessments**. The dialog closes, a confirmation appears, and your new codes appear in the table.
## Assessment options
Below the assessment codes table, the **Assessment options** panel contains toggle switches that control how assessments work in your project. Flip a switch to change a setting — each change saves automatically and a confirmation message appears, so there's no separate save button. Click the **info icon** () next to an option for a short explanation. Read-only users can see the options, but the switches are disabled.
**Allow assessments for organizations**
People (workers) can always be assessed, but by default organizations (workplaces) cannot. Turn this option on to allow organizations to be assessed as well. When enabled, the assessment disc and code selector appear on organization records just as they do on worker records, and organization assessment codes appear in search results and exports.
**Display timeline dialog when the assessment is changed?**
When this option is on, the timeline dialog appears any time someone using the app changes a record's assessment, asking them to provide more information about why the assessment changed. The dialog does not appear during data imports or other automated processes.
Like the rest of the page, the panel and its option labels follow your project's terminology preference — you'll see **Code options**, **Allow codes for organizations**, and so on if your [General settings](/docs/project-settings/general-settings) label is "Codes."
## Customize assessment colors
Broadstripes automatically assigns colors to your assessment codes. You can customize these colors to match your campaign's preferences or to make certain codes more visually distinct.
### Change a code's color
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Assessments** (or **Codes**).
2. Find the assessment code you want to customize and open its **actions menu** (⋯) in the **Name** column, then click **Edit**. The **Edit assessments** dialog opens with that code selected.
3. In the **Color** field, click the button to open the color picker. Choose a color using any of these methods:
* Click one of the six **Default Colors** swatches (green, light green, yellow, orange, red, or gray)
* Type a custom hex color code (e.g., `#488E48`) into the **Hex** field, or adjust the **R**, **G**, and **B** values individually
* Click the eye-dropper icon to open your browser's color selection tool, where you can pick any color from the full color gamut
* Click **Reset to default** to revert to the automatically assigned color
4. Click **Save changes**.
To recolor your whole scale at once, pick one of the **Suggested Palettes** at the bottom of the dialog instead of setting each color by hand. The scale preview at the top of the dialog shows the new colors before you save.
### Color best practices
* Use distinct colors that are easy to differentiate at a glance
* Consider using a color gradient that reflects the assessment scale (e.g., green for strong support, red for hostile)
* Ensure colors have sufficient contrast for accessibility
* Keep colors consistent across your campaign materials
## Edit or delete your assessment codes
### Edit
1. Find the assessment code you want to change in the table. Click the **actions menu** (⋯) in the **Name** column and select **Edit**.
2. The **Edit assessments** dialog opens, showing your full scale as a row of colored discs at the top. The code you chose is selected — click any other disc to switch to that code, so you can edit several codes in one sitting.
3. Change the **label**, **number**, **color**, or **default** setting for each code you want to update. If you change a code's number, the dialog tells you how many contacts will receive the new number.
4. Click **Save changes**. All of your edits are saved at once, and you'll see a confirmation.
### Delete
1. Find the assessment code you want to remove. Click the **actions menu** (⋯) in the **Name** column and select **Delete**.
2. Confirm that you want to delete the assessment by clicking **OK** when prompted.
3. The assessment code will be removed from your project, and all contacts who were previously assigned that code will have no code (i.e. their assessment field will now be blank).
While a deletion is processing, the **Delete** option in the actions menu is temporarily disabled for all assessment codes. Wait for the current deletion to finish before deleting another code.
# Broadstripes built-in fields
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/broadstripes-built-in-fields
Complete guide to all of the built-in fields Broadstripes provides for people, organizations, addresses, and contact information
Here's your guide to all of the built-in fields Broadstripes provides for your project.
Broadstripes provides a number of built-in information fields for your project so that you can set it up and add information easily and quickly. This is a complete guide to all of those fields and their intended use.
## People
**Notes**: This is a simple text box for preserving information that does not fit neatly into a format, and also should not be its own custom field. Often notes are one-time events, for example, "8/26, met Jane's neighbor, she said Jane works Friday evenings 3-11." Sometimes they are bits of information specific to the person: "Jane is cousins with Supervisor Maria."
**Nickname**: Here you can put any nicknames that could help you identify or keep track of your workers. This allows you to retain the worker's legal name in your data while allowing people to find them by the name they are commonly called.
**Do not email**: This check-box (labeled "Do not email (applies to bulk emails from the search results)" in the app) allows you to quickly "opt out" a person from bulk emails sent from your search results. It is un-checked by default, meaning every person you upload into Broadstripes is included in bulk emails unless you check this box. To opt a person out of text messages, set the messaging permission on the individual phone number under **Contact info** instead.
**Title**: A person's preferred title. e.g. Dr., Mrs., Ms., and so on. This is useful for mass mailings.
**First name**: A person's (legal, official, real) first name.
**Middle name**: A person's middle name.
**Last name**: A person's last name. This can be changed in the app in case of marriage/divorce/other name change.
**Suffix**: Any suffixes such as Jr., Senior, II, III can be recorded in-app as well. This is particularly useful when multiple family members work for the same employer.
**Birth date**: This field records worker birth dates in MM/DD/YYYY format. Birth dates are useful when trying to correctly identify workers with common names or the same name, and also may be used for matching employer records.
**Party ID**: If your project includes voter data, you can use the "Party ID" field to enter registered voters' party affiliation. This is a drop-down menu containing whatever different parties are represented in your data.
**Employment**: The Employment field has several subfields. Department and Classification are the two most commonly used ones, e.g. Department: Housekeeping, Classification: Guest Room Attendant.
Other available subfields include Employee Number, Work location, Hours, Hourly rate, Employee status, Start date, Recent hire date, Date last paid, Seniority date, Bargaining unit member (checkbox), Tip card (checkbox), and full/part time (text box). Depending on the needs of your organization, it may be more useful to create custom fields for this information instead of using the available subfields under Employment.
**Union member**: This is a simple yes/no checkbox. It can be disabled if your union's membership structure requires a more complicated, custom field.
**Contact info**: Here is where your person's emails, phone numbers, and other contact details can be stored. Often workers will have work emails and personal emails, and a cell, work, and home number. Broadstripes allows you to classify every entry into the Contact Info field by use type (Personal, Business, Home, or Other) and contact type (Phone, Email, Fax, Pager, IM, Link (URL)). You can also set Messaging Permissions for every entry (opt-in or opt-out).
**Address**: You can add as many addresses to this field as you want; just make sure to select the correct Primary address. Only one address can be the Primary address. That address will be the default address displayed in searches.
The Address field has many components, not all of which need to be used for any given entry. The components are: Street Number (e.g. **100** Main St.) Direction prefix (e.g. **North** Main St.) Street Name (e.g. Main St.) Street Type Direction Suffix (e.g. Main St. **South**) Unit (Unit 101) Care of (you probably won't use this field unless you are delivering a package to your worker) PO Box (this is where you would enter a PO Box number) City (e.g. New Haven) State (the two-letter abbreviation, e.g. CT) Zip (first five) e.g. 06511 Zip (plus 4) (e.g. 0611-7045) Organization/Other (if the address is a work address, or any other information about it).
You can also mark addresses as bad. Only do this if you are sure the address is wrong in some way-- if a piece of mail gets returned to you, or the building in question is demolished, or you are otherwise certain that the worker no longer lives there. If you are not certain an address is bad, you can mark it as "Needs review" instead, which will allow you to find it easily at a later date to change or update it.
## Organizations
**Name**: The official name of the organization.
**Nickname**: If the organization is commonly called something other than its official name, input it here. For instance, Saint Vincent Hospital's nickname could be SVH.
**Notes**: This is a simple text box for preserving information that does not fit neatly into a format, and also should not be its own custom field. Often notes are bits of information specific to the organization, for instance, "Floor 12 supervisor is Mary."
**Addresses**: Depending on how big your organization is, it may have multiple locations. You can record all affiliated addresses in the Addresses field, although this may not be useful for very large organizations/workplaces. Only one address may be the Primary address: a mailing address or central office is a good choice for a Primary address. Using the Organization/Other field, you can denote what each address is for (e.g. Billing Department, Human Resources, etc).
**Contact information**: Contact details for the organization including phone numbers, emails, and other communication methods.
**Parent organization ID**: For organizations that are part of a larger entity, this field can track the relationship to the parent organization.
**Website**: If the employer/organization has a website, it can be stored in this field.
# Built-in data
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/built-in-data
Guide to Broadstripes' built-in information fields for people, organizations, addresses, and contact information
## Intro
Broadstripes comes with a number of built-in information fields already included. This means that you can set up your project and add information to it easily and quickly.
Below is a quick guide to Broadstripes' built-in fields and their intended use. (Click [here](/docs/data-import-admin/data-import-fields) for a full guide to Broadstripes built-in fields and custom fields)
## People
Here's how to store information about workers.
*The detailed built-in people fields table is available in the full data import fields guide referenced above.*
## Organizations
*This section is being drafted, but isn't ready for prime-time yet. Please check back here soon.*
## Physical addresses
Here's a look at all the built-in components of an Address. Just remember that you don't need to use all of them for any given entry.
*The detailed address components table is available in the full data import fields guide referenced above.*
### Multiple addresses and primary addresses
Some people or organizations have multiple locations or addresses. You can add as many addresses to Broadstripes' address field as you want; just make sure to select the correct **Primary address**. Only one address can be the Primary address, and once chosen, that address will be the default address displayed in searches.
For **organizations**, a mailing address or central office is a good choice for a Primary address. For **workers**, the worker's current home address is the recommended choice for a Primary address.
Commonly, **organizations** have multiple locations or addresses. You can record all affiliated addresses in the **Addresses** field, although this may not be useful for very large organizations/workplaces. Using the **Organization/Other** field, you can denote what each address is for (e.g. Billing Department, Human Resources, etc).
### Bad addresses or addresses that need review
You can also mark addresses as "**bad**". Only do this if you are sure the address is wrong in some way-- if a piece of mail gets returned to you, or the building in question is demolished, or you are otherwise certain that the worker no longer lives there.
If you are not certain an address is bad, you can mark it as "**Needs review**" instead, which will allow you to find it easily at a later date to change or update it.
## Contact information
*This section is being drafted, but isn't ready for prime-time yet. Please check back here soon.*
## Employment field and sub-fields
*This section is being drafted, but isn't ready for prime-time yet. Please check back here soon.*
# Built-in tools
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/built-in-tools
Overview of Broadstripes' built-in organizing tools designed specifically for labor organizing campaigns
## Overview
Broadstripes was built primarily to help labor organizers find and use information effectively during campaigns. One of its key strengths is the collection of built-in tools within Broadstripes that are designed specifically to collect and organize information relevant to labor organizing.
These organizing tools are designed to address workers' personal opinions, leadership in social groups, and employment information that organizers need to run effective campaigns.
## Key built-in tools
### Built-in data fields
You can easily populate your project with workers' addresses, departments, and more in just a few minutes using built-in fields. These fields are pre-configured to capture the most common types of information needed for organizing campaigns.
For a complete list of built-in data fields and their explanations, see the [built-in data](./built-in-data) article.
### Assessment codes
Assessment codes are one of the most important tools for tracking worker support during organizing campaigns.
**How assessment codes work:**
* You can code a worker using a scale of 1 to 5
* Typically, 1 means "on board" and 5 means "most hostile"
* The scale allows you to track varying levels of support or opposition
**Common uses for assessment codes:**
* Count who will sign a union card
* Track potential votes in a union election
* Count petition signatures
* Keep track of potential votes in political elections
* Turn out workers to meetings or rallies
Assessment codes provide organizers with a quick, standardized way to evaluate and track worker sentiment throughout a campaign.
### Leadership roles
The leadership roles tool helps you identify and organize the social structure within your workplace or community.
**How leadership roles work:**
* You name leaders in your shop or workplace
* You can then assign them people to lead
* This creates a hierarchical structure that reflects real workplace relationships
**Benefits of leadership roles:**
* Track natural workplace leaders and influencers
* Organize workers into leadership structures
* Plan targeted outreach through identified leaders
* Build organizing committees based on actual workplace dynamics
## Why use built-in tools?
These built-in tools offer several advantages over custom solutions:
* **Proven in practice**: These tools have been developed based on real organizing campaign needs
* **Ready to use**: No setup required - you can start using them immediately
* **Standardized**: Consistent approach across different campaigns and organizations
* **Integrated**: Work seamlessly with other Broadstripes features like reporting and mapping
## Getting started with built-in tools
To start using these built-in tools effectively:
1. **Assess your campaign needs**: Determine which types of information are most critical for your specific organizing goals
2. **Set up assessment scales**: Define what each assessment code (1-5) means for your campaign
3. **Identify leaders**: Begin mapping out leadership structures in your workplace or community
4. **Train your team**: Ensure all organizers understand how to use these tools consistently
These built-in tools provide the foundation for effective data collection and analysis in your organizing campaigns, helping you make informed strategic decisions based on solid information.
# Contact information
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/contact-information
Understanding how to store and manage contact information including emails, phone numbers, links, and messaging permissions
The Contact Information field is where your worker's emails, phone numbers, and other contact details can be stored. Often workers will have multiple types of contact information with different purposes. Here is a guide to all the possible options.
Broadstripes allows you to classify every entry into the Contact Info field by use type (Personal, Business, Home, or Other) and contact type (Phone, Email, Fax, Pager, IM, Link (URL)).
## Use types
* **Personal**: Contact information for personal use
* **Business**: Work-related contact information
* **Home**: Home contact information
* **Other**: Any other type of contact information
## Contact types
* **Phone**: Phone numbers (mobile, landline, etc.)
* **Email**: Email addresses
* **Fax**: Fax numbers
* **Pager**: Pager numbers
* **IM**: Instant messaging handles
* **Link (URL)**: A website or URL (e.g. a social media profile or a personal page). The value is displayed as a clickable link that opens in a new tab. You can enter a full URL like `https://instagram.com/janedoe` or a bare address like `instagram.com/janedoe` -- Broadstripes adds `https://` automatically.
Each contact entry can also have messaging permissions set to control opt-in or opt-out preferences for communications.
## Email format validation
When you expand an email contact info entry to edit it, Broadstripes checks the address format as you type. If the value does not look like a valid email address, a warning appears below the field: **"Please enter a valid email address."** The field is highlighted in red until the address is corrected or cleared.
The check runs in real time in the browser and matches the same rules the server enforces when you save -- so if no warning is shown while typing, the address will be accepted on save.
# Copy to Project
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/copy-to-project-guide
The **Copy to Project** feature allows you to copy contacts and their associated data from one Broadstripes project to another. This is useful for sharing contacts between campaigns, creating backup projects, or transferring data to new organizing efforts.
***
## Prerequisites & Permissions
To use the Copy to Project feature, you must meet the following requirements:
| Requirement | Details |
| ----------------------- | ------------------------------------------------------------------------------------------ |
| **Role** | You must be a **Project Admin** in **both** the source project and the destination project |
| **Membership** | You must have an active membership in both projects |
| **Destination project** | The destination project must already exist |
Basic users cannot access this feature. If you don't see "Copy to project" in the Actions menu, contact your project administrator.
***
## When to Use Copy to Project
**Common Scenarios**
1. **Starting a new campaign from existing contacts**
* You have a successful organizing campaign and want to start a related effort with the same worker contacts
2. **Creating regional or departmental projects**
* Splitting a large project into smaller, more manageable projects based on geography or department
3. **Sharing contacts between affiliate organizations**
* Multiple unions or organizations need access to the same pool of contacts
4. **Creating a test or training project**
* Copy real data to a separate project for training new staff or testing workflows
5. **Backing up critical contacts**
* Preserving a snapshot of contact data at a specific point in time or archiving old data
6. **Consolidating campaign data**
* Bringing together contacts from multiple organizing drives
***
## Step-by-Step Instructions
**Step 1: Search for Contacts**
1. Navigate to your source project
2. Use the **Search** feature to find the contacts you want to copy
3. You can use any search criteria (lists, events, custom fields, etc.) to filter your results
**Step 2: Access the Copy to Project Feature**
1. From the search results page, click the **Actions** dropdown menu
2. Select **"Copy to project"**
**Step 3: Select Destination Project**
1. A panel will appear with a dropdown menu
2. Select the **destination project** from the list
* Only projects where you have Project Admin access will appear
3. Click **"Review data to be copied"**
You must select a project before proceeding. If you click "Review data to be copied" without selecting a project, you'll see the error: *"Please select a project."*
**Step 4: Select Contacts**
Before clicking "Review data to be copied," select the contacts you want to copy:
* **Individual selection:** Click the checkbox next to each contact you want to copy
* **Select all:** Use the "Select all" checkbox to select all contacts in the current search results
> **Important:** You must select at least one contact. If no contacts are selected, you'll see the error: *"Please select one or more contacts."*
**Step 5: Review the Data Preview**
The review screen shows three important sections:
#### Settings to be Copied
A list of project settings that will be created in the destination project if they don't already exist:
* External Systems
* Custom Fields
* Leader Roles
* Assessment Codes
* Event Steps
* Lists (Shared tags only)
* Classifications
* Relationship Types
* Parties
#### Data to be Copied
A count of all data items that will be copied:
* People and Organizations
* Addresses and Phone/Email
* Timeline entries
* Event Steps and Custom Field values
* External IDs and List Assignments
* Employments (active and terminated)
* Department Indicators
* Leaderships (active and terminated)
* Parent Organizations and Primary Organizations
* Relationships
#### Broken Relationships
Lists relationships that will NOT be copied because the related contact isn't in your selection. See [Broken Relationships Warning](#broken-relationships-warning) for details.
**Step 6: Execute the Copy**
1. Review the data summary carefully
2. *(Optional)* Check **"Send me an email when the copy is complete"** to receive notification
3. Click **"Copy to \[Destination Project Name]"**
You'll see a confirmation message:
> *"Your request has been made to copy the data. Refresh the page to check for completion."*
**Step 7: Monitor Progress**
1. The copy operation runs in the background
2. Navigate to **Bulk Tasks** to monitor progress (in the source project)
3. Once complete, the task will show:
* Number of contacts successfully copied
* Any errors that occurred
***
## What Gets Copied
**Project Settings (Created if not existing)**
| Setting Type | What Gets Created |
| ------------------- | ------------------------------------------------- |
| External Systems | Name, locked status, multiple employment settings |
| Custom Fields | Data type, HTML element, options, description |
| Lists | Name and description (shared tags only) |
| Events & Steps | Event name, description, end date, and all steps |
| Classifications | Name |
| Relationship Types | Name, preposition, entity type, complement type |
| Leader Roles | Name and description |
| Assessment Codes | Code number, description, default status |
| Parties | Name and abbreviation |
| Journal Entry Types | Name (custom types only) |
**Contact Data**
| Data Type | Fields Copied |
| -------------------------- | ----------------------------------------------------------------------------- |
| **People** | Name, title, suffix, occupation, sex, birth date, greeting, organizing groups |
| **Organizations** | Name |
| **Addresses** | Full address details, geocode, type, primary status |
| **Phone/Email** | Data, type, group, primary status, notes |
| **Journal Entries** | Type, notes, date, direct contact flag, assessment codes |
| **Custom Field Values** | All custom field assignments |
| **External System Values** | All external ID assignments |
| **List Assignments** | Active shared tag memberships |
| **Event Step Assignments** | All event step assignments |
**Relationships**
| Relationship Type | Copied When |
| -------------------------- | ----------------------------------------------------- |
| **Employments** | Both the person AND organization are in the selection |
| **Terminated Employments** | Same as employments |
| **Leaderships** | Both the leader AND follower are in the selection |
| **Terminated Leaderships** | Same as leaderships |
| **Parent Organizations** | Both organizations are in the selection |
| **Primary Organizations** | Both the person AND organization are in the selection |
| **Relationships** | Both contacts (A and B) are in the selection |
***
## Understanding Employment Relationships
Employment records link People to Organizations. To preserve these relationships when copying:
### Retaining Employment Relationships
**Both the person AND the organization must be selected** for the employment to be copied.
**Example:**
* If you copy Jane Doe who is employed at Acme Corp:
* ✅ **Employment IS copied** if both Jane Doe AND Acme Corp are in your selection
* ❌ **Employment is NOT copied** if only Jane Doe is selected
### Special Cases
1. **Employments without organizations**
* Some employments may only have a person (no linked organization)
* These are always copied with the person
2. **Multiple employments**
* If a person has multiple employments, each one is evaluated separately
* Only employments where both parties are selected will be copied
3. **Terminated employments**
* Follow the same rules as active employments
* Include additional fields: `date_ended` and `reason_ended`
4. **Employment external systems**
* External system values linked to copied employments are also copied
### Previous Copy to Project Jobs May Block Employment Copying
**Each copy operation is evaluated independently.** If you copied an organization in a previous job, you cannot copy a person's employment to that organization in a later job—even if you include the organization in your selection again.
**Example scenario:**
1. **First copy job:** You copy Acme Corp (organization) to the destination project ✅
2. **Second copy job:** You copy Jane Doe (who is employed at Acme Corp) and include Acme Corp in your selection
**Result:**
* Acme Corp is **not duplicated** (the system recognizes it was already copied)
* But Jane Doe's employment at Acme Corp is **still NOT copied**
**Why?** The system filters out already-copied contacts *before* checking employment relationships. Since Acme Corp is filtered out as "already copied," it's not included in the employment eligibility check.
**The review screen will flag this.** The [Broken Relationships](#broken-relationships-warning) section in the data preview will show the employment as broken, even though you included the organization in your selection. This is your signal that the employment will not be copied.
**The key takeaway:** To preserve employment relationships, you **must include both the person AND their employer organization in the same copy operation**—ideally the first time either is copied.
#### Workarounds for Previously Copied Contacts
If the organization was already copied in a previous job and employment relationships were not transferred, you can recreate them in the destination project using one of the following approaches:
**Option 1: Data import in the destination project (recommended)**
Use the [data import](/docs/data-import-admin/data-import-overview) feature to create employment relationships from a spreadsheet. This is the best option when you need to link multiple people to organizations that already exist in the destination.
1. Prepare a spreadsheet containing the affected people and their employment details
2. Include columns that allow Broadstripes to [match to existing people](/docs/data-import-admin/update-contacts-with-an-import) in the destination — such as a Unique ID (e.g., an external system ID or Broadstripes ID) or name fields (First Name, Last Name)
3. Include [employment columns](/docs/admin-guides/data-tools/employment-field-and-subfields) such as **Employer**, **Department**, **Classification**, and any other employment subfields you need to transfer
4. [Import the spreadsheet](/docs/data-import-admin/import-a-spreadsheet) in the **destination project** — click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), choose **Data imports**, and click **+ New\...**
5. During column mapping, map your employment columns to the corresponding Broadstripes fields
6. In the Configuration panel, check **"Automatically create shops and departments and link employments"**
7. Preview and run the import
Since both the people and organizations already exist in the destination project, the import will match to the existing records and create the employment link between them — without duplicating contacts.
**Option 2: Manual recreation**
For a small number of employments, open each person's record in the destination project and manually add the employment relationship. This is practical for fewer than \~10 employments but does not scale well.
### How to Ensure Employments Are Copied
1. When selecting contacts, include all related organizations
2. Use the **Broken Relationships** section in the review to identify missing parties
3. Click on the numbered button in the Broken Relationships section to see which contacts need to be added
***
## Broken Relationships Warning
The review screen shows a **Broken Relationships** section that lists relationships that will NOT be transferred because one party is missing from the working set. A contact can be missing from the working set if it was not included in your selection **or** if it was already copied to the destination in a previous job.
### Understanding the Warning
| Relationship Type | What It Means |
| -------------------------- | ------------------------------------------------- |
| **Employments** | Person selected, but employer organization is not |
| **Terminated Employments** | Same as above for historical employments |
| **Leaderships** | Leader or follower is not in the selection |
| **Terminated Leaderships** | Same as above for historical leaderships |
| **Parent Organizations** | Parent or child organization is missing |
| **Primary Organizations** | Person or their primary organization is missing |
| **Relationships** | One of the two related contacts is missing |
**Already-copied contacts count as "missing."** If a contact was copied in a previous job, it is removed from the working set before relationship checks run. Relationships involving that contact will appear as broken — even if you included the contact in your current selection. See [Previous Copy to Project Jobs May Block Employment Copying](#previous-copy-to-project-jobs-may-block-employment-copying) for details.
### Viewing Affected Contacts
1. In the Broken Relationships section, click the **numbered button** next to each relationship type
2. This creates a temporary list and opens a new search showing the affected contacts
3. Use this information to decide whether to add more contacts to your selection
### Resolving Broken Relationships
1. **Add missing contacts:** Go back and include the missing organizations or people in your selection
2. **Accept the break:** If you don't need the relationship in the destination, proceed with the copy
3. **Recreate later:** You can manually recreate relationships in the destination project after copying, or use [data import](/docs/data-import-admin/data-import-overview) to create them in bulk
**Option 1 will not work if the missing contact was already copied in a previous job.** In that case, the contact is filtered out of the working set regardless of whether you include it in your selection. See [Workarounds for Previously Copied Contacts](#workarounds-for-previously-copied-contacts) for how to recreate the relationships after the copy.
***
## Common Errors
### Validation Errors
| Error Message | Cause | Solution |
| --------------------------------------- | ------------------------------- | ------------------------------------ |
| *"Please select a project."* | No destination project selected | Choose a project from the dropdown |
| *"Please select one or more contacts."* | No contacts checked for copying | Select at least one contact checkbox |
### Permission Errors
| Error | Cause | Solution |
| ------------------- | ---------------------------------------------------- | -------------------------------------------------- |
| Access denied | Not a Project Admin in one or both projects | Request Project Admin access from an administrator |
| Project not in list | You don't have membership in the destination project | Request membership in the destination project |
### Copy Errors (Shown in Bulk Tasks)
| Error Type | Example | Cause |
| --------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| **Person validation** | *"Person: Validation failed: Person is invalid (first\_name: , last\_name: )"* | Person has invalid or missing required data |
| **Contact info error** | *"Contact info: cannot access stuff (contact\_id: 123, type: Phone)"* | Error accessing related data during copy |
| **Custom field validation** | *"Custom field assignment: Validation failed: Value is not valid for Shift (custom\_field: Shift, value: AM)"* | Custom field value doesn't match destination project's options |
| **External system error** | Database connectivity or external system lookup failure | Temporary system issue—retry later |
#### Custom Field Validation Errors
This error occurs when a custom field value in the source project is not a valid option in the destination project. This typically happens when:
1. **The custom field exists in both projects but with different options**
* Source project has "Shift" field with options: AM, PM, Night
* Destination project has "Shift" field with options: Day, Evening, Night
* Copying a contact with "AM" fails because "AM" isn't a valid option in the destination
2. **The custom field was created in the destination but options weren't copied**
* The copy operation creates new custom fields if they don't exist
* But if a field with the same name already exists, its options are NOT updated
**Solutions:**
* **Before copying:** Ensure custom field options in the destination project match or include all options from the source project
* **After error:** Add the missing option to the custom field in the destination project, then re-copy the affected contacts
### Partial Completion
If some contacts fail to copy:
* The Bulk Tasks page shows the number successfully copied
* Detailed error messages list each failure
* Successfully copied contacts remain in the destination
* You can fix the source data and retry copying the failed contacts
***
## Tips & Best Practices
**Before Copying**
1. **Clean your data first**
* Ensure people have valid first or last names
* Fix any data validation issues in the source project
2. **Plan your selection carefully**
* Include all related organizations if you need employments
* Use the preview to understand what will transfer
3. **Check existing data**
* Contacts already copied to the destination will be skipped
* The review shows *"Contacts already copied to \[project]"* count
**During the Copy**
1. **Use email notifications for large copies**
* Check "Send me an email when the copy is complete" for large batches
* Large copies can take 30+ minutes
2. **Don't navigate away too quickly**
* Wait for the confirmation message before leaving the page
* The job runs in the background, but ensure it's queued
**After Copying**
1. **Verify the results**
* Check the Bulk Tasks page for the final status
* Review any error messages
2. **Spot-check the destination**
* Open a few copied contacts in the destination project
* Verify relationships, custom fields, and other data transferred correctly
3. **Re-copy if needed**
* Already-copied contacts are automatically skipped
* You can safely re-run the copy to catch any that failed
**Understanding Duplicate Prevention** Broadstripes tracks which contacts have been copied by creating an External System in the destination project named after the source project's ID. This prevents duplicate copies if you run the same copy operation multiple times.
***
## Frequently Asked Questions
**Q: Can I copy contacts to multiple projects at once?** A: No, you must copy to one destination project at a time. Run separate copy operations for each destination.
**Q: Will duplicate contacts be created if I copy twice?** A: No, the system tracks previously copied contacts and skips them automatically.
**Q: Can I undo a copy operation?** A: There is no automatic undo. You would need to manually delete the copied contacts from the destination project.
**Q: Are attachments copied?** A: No, file attachments are not included in the copy operation.
**Q: What about saved searches and layouts?** A: These are project-specific and are not copied. You'll need to recreate them in the destination project.
**Q: Can regular users see copied contacts?** A: Yes, once contacts are in the destination project, visibility follows normal project permissions.
**Q: I copied an organization first, then copied a person employed there. Why didn't the employment transfer?** A: Each copy operation is evaluated independently. The system filters out already-copied entities before checking employment relationships. Since the organization is recognized as "already copied," it's excluded from the employment eligibility check. The review screen's [Broken Relationships](#broken-relationships-warning) section will flag this before you execute the copy. To preserve employments, both the person and organization must be included in the **same** copy operation.
**Q: If I include an already-copied organization in my selection, will it be duplicated?** A: No, previously copied contacts are automatically skipped and won't be duplicated. However, this also means they won't count toward employment relationship checks in later copy operations.
*Last updated: February 2026*
# Events
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/creating-an-event
Learn how to create, edit, and manage events and event steps to track campaign activities and worker engagement
## Overview
**Events** are one type of custom field in Broadstripes. Each event can be created to contain one or more "**steps**" (checkboxes) to capture particular actions in the workflow of a given campaign activity.
Some examples of when you might use events include recording a worker's involvement in rallies and marches, or the signing of a petition or union card.
You should use events to record information that occurred at a certain time, whereas you'll use [built-in data fields](/docs/admin-guides/data-tools/built-in-data) or [custom fields](/docs/admin-guides/data-tools/custom-fields) to record information that is always true.
If you'd like to learn more about what events are and exactly when they should be used, take a look at the [Create events to track your goals](/docs/customize/create-events-to-track-goals) article in the User Guide.
## The Events page
To reach the Events page, click **Events** in the left-hand navigation panel.
The page shows all your project's events as expandable cards. A toolbar at the top lets you filter, search, and sort:
* **Active / Inactive / All** toggle — switch which events are shown; each button shows a count.
* **Search box** — type to instantly filter events by name or step name. Cards whose steps match expand automatically to show the matching steps.
* **Sort** button () — choose from several sort options: most recently active, newest, oldest, most contacts, fewest contacts, name A–Z, name Z–A, ends soonest, or ends latest.
* **Expand all** / **Collapse all** icon buttons — open or close every visible card at once.
The Events page is accessible to all users, and any user can create, edit, and delete events. In a read-only project the page is view-only -- the editing controls don't appear.
## Create an event
Together, events and event steps let you track information that's important to your organizing efforts.
In this example, we'll set up an event for an external organizing card-signing drive named "**Card**" with steps named "Signed," "On file," and "Email sent."
(If you want to understand when it's appropriate to use events and when it's better to use another data object, please review the [Data tools overview](/docs/admin-guides/data-tools/data-tools-overview) article or the [Create events to track your goals](/docs/customize/create-events-to-track-goals) article.)
1. Click **Events** in the left-hand navigation panel to open the Events page.
2. Click the **+ New Event** button in the toolbar. A new card appears at the top of the list with a name field ready to type in.
3. Type the name of the event (e.g. "Card") and press **Enter** (or click away) to save it. The event is created immediately and a blank step field appears so you can add the first step.
4. Type the name of the first step (e.g. "Signed") and press **Enter** to save it. A new blank step field appears automatically so you can keep adding steps.
5. Add as many steps as you need (following our example: "On file" and "Email sent"), pressing **Enter** after each one. When you're done adding steps, press **Escape** or click elsewhere to finish.
6. That's it -- the event and its steps are saved as you go. There's no separate Save button.
7. Follow the steps above to create as many events as you want for each project (there is no limit to how many events you have).
## View an inactive event
When an event ceases to be relevant to the active organizing work, you can [make the event inactive](#make-an-event-inactive). Inactive events are hidden from users' data-entry forms and from most reports.
To see inactive events, click the **Inactive** button in the toolbar. You can also click **All** to see active and inactive events together.
## Event settings
When you expand an event card (click the chevron or click the header row), a details panel appears at the bottom of the card where you can set these options:
* **End date** — the date on which the event ended or is scheduled to end. Optional.
* **Single choice** — when on, checking one step of this event automatically unchecks all others. Useful for mutually exclusive steps (like "Signed" and "Declined to sign").
* **Description** — free-form notes about what this event tracks. The description is shown as a short summary line in the collapsed card header.
Changes to these fields save automatically when you click or tab away.
You can read more about event options in the [Create events to track your goals](/docs/customize/create-events-to-track-goals) article.
## Step settings
Each step has a settings popover that you can open by clicking the **step settings** icon () on the step's row. The popover has two sections:
**Behavior**
* **Timeline tracked** — when on, checking this step prompts the user to enter a timeline note. Use this for steps that represent a meaningful milestone you want recorded in a contact's history.
**Include on**
* **Detail reports** — whether this step appears on contact detail reports.
* **House visit sheets** — whether this step appears on house visit sheets.
* **Walk lists** — whether this step appears on walk lists.
* **Phone lists** — whether this step appears on phone lists.
Active chips showing which options are on are displayed directly on the step row so you can see at a glance which settings are enabled without opening the popover.
## Make an event inactive
If you have an event that's no longer important to your current work, but you aren't ready to delete the information it tracks, you can deactivate it. Deactivating an event hides it from data-entry forms and most reports. If you ever need to see the data again, you can re-activate the event.
1. Click **Events** in the left-hand navigation panel.
2. Find the event you want to deactivate (use the search box or browse the list).
3. Click the **more actions** button () on the event card and choose **Deactivate**.
4. The event immediately moves to the Inactive list.
### Calculated columns and inactive events
If you have a calculated column whose search text refers to an inactive event or any of that inactive event's steps, the column's calculations will still display. To hide the column, delete the column from your layout or report.
### What if I want to see the event data again?
The data in a deactivated event remains in Broadstripes' database. Because it's inactive, the event and all its steps will disappear from data-entry forms, and they won't show up on reports. You also won't be able to search using values from that event as your search criteria.
If you decide that you need to see the data again (or use it for a search or in a report), you can simply re-activate the event:
## Re-activate an inactive event
1. Click **Events** in the left-hand navigation panel.
2. Click the **Inactive** button in the toolbar to switch to the inactive event list.
3. Find the event you want to reactivate.
4. Click the **more actions** button () on the event card and choose **Reactivate**.
5. The event and all its associated steps are now active again and the data will be viewable just as it was before being deactivated.
## Edit an event
All editing on the Events page is inline -- there's no separate "edit mode" to turn on, and all changes save automatically.
### Rename an event
Click the event name in the card header. The name turns into an editable field. Make your changes and press **Enter** (or click elsewhere) to save. Press **Escape** to cancel.
### Rename a step
Expand the event card, then click the step name. The name turns into an editable field. Make your changes and press **Enter** (or click elsewhere) to save.
### Add a step to an existing event
Expand the event card and click the **add step** link at the bottom of the step list. A blank field appears -- type the step name and press **Enter** to save it (or **Escape** to cancel).
### Reorder steps
Expand the event card, then drag the **drag handle** icon () on the left side of any step row to move it to a new position within the event. You can also use the **move up** () and **move down** () arrow buttons that appear when you hover over a step row.
### Move a step to a different event
You can drag a step from one event card and drop it onto another event card to move the step. If the target event card is collapsed, drop the step anywhere on the card header.
### Delete a step
Expand the event card, then click the **more actions** button () on the step row and choose **Delete step**. Broadstripes will ask you to confirm before deleting.
Deleting a step removes it and all its history permanently. This cannot be undone.
## Delete an event
### Deleting an event is permanent
Deleting an event removes the event *and all its associated steps and history* permanently from your project.
If you want to keep an event and its associated data in your project, but want it hidden from your users' view, you should **deactivate** the event rather than delete it. Read more in the [Make an event inactive](#make-an-event-inactive) section above.
1. Find the event you want to delete (use the search box or browse the list).
2. Click the **more actions** button () on the event card and choose **Delete event**.
3. Broadstripes will prompt you to confirm the deletion.
4. The event and all its associated steps will be removed from your project. After deletion, the event and its steps will no longer show on any contact's record, and all history of the event will be gone.
## Contact counts
Each event card shows the total number of contacts checked into any step of that event as a clickable link. Clicking that count opens a search showing those contacts. Each step row shows its own count -- contacts checked into that specific step -- also as a clickable link.
## Learn more
You and members of your team can also read the [Create events to track your goals](/docs/customize/create-events-to-track-goals) article to learn about how different types of events work and how to add events to your data entry layouts.
# Custom fields
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/custom-fields
Create and manage custom fields to capture data specific to your organizing campaign that doesn't fit in built-in fields
## Overview
Data that is permanently relevant about the worker (such as "Shift" and "Issues of Concern") – but can't logically be mapped to one of [Broadstripes' built-in fields](./built-in-data) – is best captured in a **custom field**.
## How is a custom field different from an event?
A custom field differs from an [event](./creating-an-event) in a few ways.
**Events** (which are covered in their own articles – [Using events to track goals](/docs/customize/create-events-to-track-goals) and [Creating an event](./creating-an-event)) are probably the most widely-used custom data tool in Broadstripes. Use them to:
* record data that is being tracked for a **certain period of time** (such as a worker's involvement in rallies and marches)
* record important **one-time information** or **occurrences** (like the signing of a petition or union card).
* record information that can be captured using a **checkbox** (events do not allow any other data types)
**Custom fields** may not be as commonly used as events, but custom fields have two key advantages:
* They can **capture a wide variety of data types** (text, date, checkbox, memo (long text), dropdown box, multi-select dropdown), whereas events can only use checkboxes to capture data.
* They are **more directly and permanently associated with the worker** (or organization) for which they are created than events, which are typically used to capture time-sensitive data.
## Examples of custom fields
Here are some examples of what custom fields often record:
* the date a worker signed a card
* a checkbox to indicate that a union member is in good standing with dues
* a multi-select dropdown box that allows you to indicate which issues are most important to each worker
Broadstripes allows you to create an unlimited number of numeric, date, checkbox, text, and memo (longer text) custom fields. Custom fields can apply to people, organizations, or both.
Read on to learn more about working with custom fields:
## Create a new custom field
This section describes the process of creating one type of custom field called a "drop-down box." Custom fields can be set up to capture other data, too (dates, checkboxes and so on). If you're still unclear about what custom fields are, or whether you need them to capture your data, please read [Data tools overview](./data-tools-overview).
For this example, we are going to capture the top area of interest (e.g. contracts, scheduling, or grievances) for a potential leader in a new custom field called "**Interests**":
1. Get started by logging in to your project as a user with admin permissions. Click the **Project settings** icon in the upper right-hand corner of the page (or press **Ctrl-K** / **⌘K**), then choose **Custom fields**. That will take you to your project's custom field index, a page listing any custom fields already created in the project.
2. Create a new field by clicking the **New\...** button in the toolbar above the list.
### Configure the custom field
Use the form that opens to create your new custom field.
1. **Name** the custom field. Use a clear and concise name, and avoid punctuation if you can help it — it makes searching on the field trickier.
2. Give the field a **Description**. The description will be displayed in a pop-up box as guidance for your users.
3. Check **Enabled**. If a custom field's data ever becomes irrelevant, but you are not ready to delete it, you can uncheck this box to disable the field. You can also use the **Visible to admins only** and **Editable by admins only** options to control who can see or change the field — see [Control who can see and edit a custom field](#control-who-can-see-and-edit-a-custom-field) below.
4. (Optional) Link your field to the correct **External system**. A custom field linked to an external system is updated when you import a new spreadsheet. If no external system is selected, the field will need to be updated manually by users via data entry. For this example, we'll choose **Legacy CRM Database** as the external system since that is where our worker records will be imported from.
5. Next, for **Applies to**, select the **type of contact** the field will be used for (Person, Organization, or All contacts). For our example, we'll choose **Person**, since we are tracking a person's interests.
6. Choose the **Field type** to determine how your data choices will be displayed (e.g. check box, drop-down chooser, multiple-selection chooser, text input box, etc). For our example, we'll choose **Drop-down chooser** because we want users to choose from one of several pre-selected options.
7. Click **Save Custom Field** to advance to the next screen and customize your field type options (in our example, this means adding the choices that show up in the drop-down list we're creating).
8. After saving, you'll have the chance to add your drop-down list options on a new screen.
### Add field value options
After clicking **Save**, you'll go to a new panel where you can add the options you want to appear in the drop-down chooser. Scroll to the bottom of the page to find a tabbed interface with two ways to add options:
#### Add a single option
Use the **Add a single option** tab to add options one at a time:
1. Type the **Name** of the option (for instance, "Contracts").
2. Click **Add Option**.
3. Repeat to add additional choices.
#### Add multiple options at once
Use the **Add multiple options** tab to add up to 50 options at once:
1. Click the **Add multiple options** tab.
2. Type or paste your options into the text area, with each option on its own line.
3. Click **Add options**.
Broadstripes will add all valid options and skip any duplicates. You'll see a confirmation message indicating how many options were added and how many duplicates were skipped.
#### Indicating a default option
If you want a certain option to be selected automatically by default when your end users are entering a new contact in Broadstripes, check **Default** before saving that option.
### Change the order of the drop-down values
1. Once you are done adding all of your options, you can **click and drag** to re-order the way they will appear in the drop-down.
2. Just **click and hold** the row you want to move. When the correct row is selected (it will be highlighted in yellow), **hold and drag** it to the new spot. **Release** to drop it in place.
3. When you are done adding and rearranging your custom field options, click **Custom Fields** to see the new field you've created on the **Custom Fields overview** page.
## Edit, disable, or delete a custom field
1. Click the **Project settings** icon in the upper right-hand corner of the page (or press **Ctrl-K** / **⌘K**), then choose **Custom fields**.
2. From the **custom fields index page**, you can see all the custom fields that have been created for your project.
3. You can also edit, disable, or delete a custom field from this page by clicking the actions menu () next to that field's name and choosing **Edit** (to edit or disable) or **Delete**.
## Edit a custom field
1. Click the actions menu () next to the name of the field you want to modify and choose **Edit**.
2. First, you'll be shown the **configuration options page**.
3. Here you can edit the **name**, **description**, whether or not the field is **enabled**, or choose to link the field to an **external system**. If you need more details, all these configuration options are covered in the "Create a custom field" section above.
#### Field type cannot be edited
You will not be able to change the field type of your custom field — field type is chosen when the field is created and cannot be altered later.
4. You can make changes to the configuration options, or leave the configuration as-is and advance to field options, by clicking **Save Custom Field**.
5. You'll be shown a second panel, where you can **add**, **edit**, **delete**, or **rearrange** the **Custom Field Options.** Field options are the actual choices shown in the field's drop-down list, multiple-selection chooser, sortable list, and so on.
6. Any changes you make will be saved as soon as you make them.
7. When your edits are complete, click the **Custom Fields** menu link to return to the custom field index page and see the changes you've made.
## Control who can see and edit a custom field
Two settings on the custom field form let you restrict what basic users can do with a field's value.
**Visible to admins only** — The field is hidden entirely from basic users. Only project admins can see or set the field's value. Use this for sensitive internal notes that organizers should not see.
**Editable by admins only** — Basic users can see the field's current value, but cannot change it. When a basic user views a person or organization record, the field is displayed alongside a lock icon to indicate it is read-only. Use this when you want organizers to see a piece of information (for example, a classification imported from payroll) without being able to overwrite it.
These two settings are mutually exclusive: a field cannot be both visible-to-admins-only and editable-by-admins-only at the same time.
### Editable-by-admins-only fields in the Call Center
When a call script includes a custom field marked "Editable by admins only," callers see the field's current value displayed as plain text with a "(read-only)" label. The field is skipped when the script collects responses, so callers cannot inadvertently overwrite the value.
### Editable-by-admins-only fields and public forms
Custom fields marked "Editable by admins only" do not appear in [public forms](/docs/admin-guides/public-forms/public-forms-overview). Public forms are filled out by people who are not project users, so read-only fields have no function there and are excluded automatically.
### Editable-by-admins-only fields and data imports
A basic user with the **Can perform data imports** permission can still set or update admin-editable-only fields through a spreadsheet import. When you grant a basic user that permission, the confirmation dialog notes this capability explicitly so you can make an informed decision.
## Disable a custom field
If a custom field's data is no longer relevant, but you aren't ready to delete it, the field can be disabled. Disabling a field means it is hidden from your users' view; you also won't be able to search or report on it. If you ever want to retrieve the data from a disabled field, just re-enable the field. The data will be viewable again and nothing will be lost.
In this example, we'll be disabling a custom field named "Interests."
1. Start at the project's custom field index page: click the **Project settings** icon in the upper right-hand corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Custom fields**.
2. Find the custom field you want to disable in the list, click the actions menu () next to its name, and choose **Edit**.
3. This will take you to the custom field's edit page.
4. Locate the **Enabled checkbox** and **uncheck** it.
5. At the bottom of the page, click **Save Custom Field**.
6. You'll be shown a second panel — just leave this as it is.
7. Click the **Custom Fields tab** to return to the custom field index page.
8. On the index page, you can see that your custom field is no longer enabled.
### What if I want to see the data again?
The data in a disabled custom field remains in Broadstripes' database. Because it's disabled, it will disappear from data-entry forms, and it won't show up on reports. You also won't be able to search using values from that custom field as your search criteria. If you decide that you need to see the data again (or use it for a search or in a report), you can simply repeat the steps above. When you get to the custom field edit page (step 3), check **Enable** and save your change. The custom field's data will be viewable (and searchable) again.
### What if I have a calculated column based on a disabled custom field?
If you have a calculated column whose search text refers to a disabled custom field, its results will be inaccurate because search criteria involving that custom field will not work as they used to. The column should be changed or deleted.
## Delete a custom field
#### Deleting a custom field is permanent
Deleting a custom field removes the field *and all its associated data* permanently from your project.
If you want to keep a custom field and its associated data in your project, but want it hidden from your users' view, you should **disable** the field rather than delete it. Read more in the "Disable a custom field" section above.
1. Start at the project's custom field index page: click the **Project settings** icon in the upper right-hand corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Custom fields**.
2. To permanently delete a custom field, click the actions menu () next to the name of the custom field you want to delete and choose **Delete**.
3. Broadstripes will ask you to confirm that you want to delete the field. Both the custom field and all data records held in the field will be deleted, and the deletion cannot be undone.
4. Click **OK** to remove the custom field and all associated data from your project.
# Data tools overview
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/data-tools-overview
Understanding the different custom data tools in Broadstripes and how to choose the right tool for your organizing needs
## Intro
Many things influence the nature of a labor or community organizing campaign — the industry of the workers, the culture of the community, the goals of the campaign, and so on.
Broadstripes has been built for maximum flexibility, to allow you to capture and work comfortably with the enormous variety of data that goes along with these different organizing needs.
To take advantage of that flexibility, it helps to understand the different custom data tools the system contains, and the purposes for which they were intended.
## Where does the data belong?
The first thing to do when setting up a new Broadstripes project is to figure out what data you need to capture about the workers to organize effectively. With any luck, you already have a pretty good take on this question through your organizing work or work with the organizers to date.
The question facing you is where does this data belong in Broadstripes? Here is a short list of the options:
* **Built-in fields:** data items associated permanently with people or organizations. A complete list with some explanations is provided in the [Built-in data](/docs/admin-guides/data-tools/built-in-data) article.
* **Turf structure:** a customizable multi-level hierarchy intended to allow you to capture the way the organizers see the workplace (or "turf"). Turf structure can capture "shops," "departments," and "sub-departments," or "buildings" and "floors," or "cities" and "neighborhoods," or almost any other hierarchical information you have about where people work.
* **Events:** one of the most commonly-used custom data types in Broadstripes. Events allow you to create a group of checkboxes that capture the status of a particular action or activity in the campaign. Some events track info that is highly time-specific (like confirming that a worker will attend an organizing meeting), while others help organizers check off each step of common campaign activities (like getting cards signed and putting them on file). Each of the specific yes/no questions captured with a checkbox is called an "event step." For instance, you might create an event named "Card" with steps named "Signed", "On file", and "Email sent." Events can be single or multiple-choice, and, if you want, events can also be tracked in the contact timeline. You can learn about creating and working with events in the [Events](/docs/admin-guides/data-tools/creating-an-event) article.
* **Custom fields:** data that is permanently relevant about the worker (such as "Shift" and "Issues of Concern") is best captured in a custom field. Broadstripes allows you to create an unlimited number of text, numeric, date, true/false, and memo (longer text) custom fields. Custom fields can apply to people, organizations, or both. You can learn more about custom fields, how to create them, and how they differ from events in the [Custom fields](/docs/admin-guides/data-tools/custom-fields) article.
* **External systems:** special fields created for capturing unique IDs from other database systems. Their advantage over custom fields is that they can be used for record-level matching during data import and updates. Learn more in the [External systems](/docs/project-settings/external-systems-settings) article.
* **Attachments:** if you have data files (images, PDFs) linked to your workers, they can be stored as attachments in Broadstripes.
# Employment field and subfields
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/employment-field-and-subfields
Understanding the built-in employment field and its subfields for tracking worker employment information
The Employment field has many subfields. It is meant to provide you with a generic set of employee data fields that you are likely to find useful. However, depending on the structure of your workers' employments, you may find this section to be inadequate or not specific enough. In that case, you can use custom fields to record employment data instead.
## Employment subfields
* **Department**: Department is a built-in subclassification of Employer. For instance, in a factory/warehouse your department might be Distribution.
* **Classification**: Your worker's job title. Examples are Cashier, Attendant, Welder, etc.
* **Employee number**: If the workplace uses a unique identification number to keep track of workers (Employee ID, Badge Number, etc.), you can enter that number here.
* **Work location**: You can use this to name the building, floor, office, section etc. where your worker is located.
* **Hours**: The number of hours per week that your person is scheduled to work.
* **Hourly rate**: The worker's hourly wage rate.
* **Employee status**: Current employment status of the worker.
* **Start date**: When the worker first started at the company.
* **Recent hire date**: Most recent hire date if the worker was rehired.
* **Date last paid**: Last date the worker received payment.
* **Seniority date**: Date used for calculating seniority within the organization.
* **Bargaining unit member**: Checkbox to indicate if the worker is part of the bargaining unit.
* **Full/part time**: Text field to specify whether the worker is full-time or part-time.
# Leadership roles
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/leadership-roles
Set up and manage leader roles to identify and track leadership within your organizing campaign
## Overview
An important part of many kinds of organizing is the identification of **leaders** within the bargaining unit or worker group. Leadership is usually defined by roles.
Labor organizing (internal or external) often uses "Committee" and "Key Leader," while "Activist" or "Mobilizer" are more common in community organizing.
With Broadstripes, it is simple to set up leader roles to suit the style of organizing you're doing.
## Set up new leader roles
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Leader roles**.\
This takes you to the **leader role index page** that lists any existing roles in your project.
2. Click on the button to add **+ New Leader Role**.
3. Give the new role a one- or two-word **name** that's meaningful to the organizers on your campaign. (This is the text that will appear on-screen and in reports.)
4. Add a **description** (optional). If your project has many roles, it can be useful to create a short descriptive sentence for each.
5. Enter a **position number**. The position number conveys where the role fits in the hierarchy of leadership. It determines where the role will appear in the leader role drop-down chooser as seen by your end users.
When setting **position numbers**, a lower number means a higher position in the hierarchy, so a role with position 1 will appear at the top of the list, and so on. Leaving the number value as "0" will make Broadstripes automatically assign the next available number, placing your new role at the bottom of the list.
6. Check **Represents leadership** if you are creating some roles that do not represent leadership and wish to have the ability to distinguish between people in leadership roles and those with non-leadership roles. An example of a non-leadership role is a "Target," a person who may have influence in the bargaining but who has not yet committed to using that influence to support your campaign's goals.
7. Configure the **coverage settings** for this role. New leader roles open with both coverage checkboxes already enabled, so you only need to change these if you want different behavior for this role:
* **Leaders are covered** — When checked, people with this role are counted as covered in Broadstripes' automatic calculation of coverage within the shop/department turf. (This organizing metric can be shown on the Turf Panel and added to status reports at your discretion.)
* **Followers are covered** — When checked, the followers of leaders with this role are also counted as covered. For example, if a "Committee" leader has this option enabled, anyone assigned to that leader will automatically be counted as covered, even if they don't have a leadership role themselves.
**Followers are covered** depends on **Leaders are covered**. If you uncheck **Leaders are covered**, the **Followers are covered** option is automatically cleared and disabled — followers cannot count as covered if their leaders do not. Re-checking **Leaders are covered** restores **Followers are covered** to checked.
8. Click **Save Leader Role**. You'll be returned to the leader role index page where all your roles are listed.
9. Repeat these steps until you've created the roles you need.
Your finished leader role list might look something like this:
## Manage roles in the grid
The leader role index page is an interactive data grid. From here you can reorder roles, toggle settings inline, and access edit and delete actions without leaving the page.
### Reorder roles
Drag any row by its handle on the left side to reposition it in the hierarchy. The **Position** column updates live to reflect the new order. Dragging is disabled while a column filter is active -- clear the filter first to re-enable reordering.
### Toggle settings inline
Three columns can be toggled directly in the grid without opening the edit form:
* **Represents leadership** -- Check or uncheck to control whether this role counts as a leadership role.
* **Leaders are covered** -- Check or uncheck to control whether people with this role count as covered in Broadstripes' coverage calculations.
* **Followers are covered** -- Check or uncheck to control whether the followers of leaders with this role also count as covered. This option is disabled when **Leaders are covered** is unchecked.
Changes take effect immediately. If a save fails, the checkbox reverts to its previous value.
## Edit or delete your leader roles
### Edit
1. To **edit** a leader role, click the actions menu () at the right side of the role's name cell and choose **Edit**.
2. Make the changes you want, and click the **Save Leader Role** button.
3. You'll be returned to the **Leader role index page** where you can see your changes.
### Delete
1. To permanently **delete** a leader role, click the actions menu () at the right side of the role's name cell and choose **Delete**.
2. A confirmation dialog appears showing the role's name and, if any contacts hold that role, how many people will lose it.
3. Click **Delete** to confirm. The leader role is removed from your project, and any contacts who had it will have no leader role assigned.
# Organizations
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/organizations
Understanding the built-in data fields for organizations in Broadstripes
Here's an outline of the built-in data fields for organizations in Broadstripes.
## Organization fields
**Name**: The official name of the organization.
**Parent organization**: If the organization you are creating is, for instance, a department or section within a larger organization, you can link it to its parent organization using this field. Searching with a keyword (e.g. "hospital") will return a list of organizations to choose from. You cannot create a new organization on this page; you must select an organization that has already been entered into Broadstripes, or else leave the field blank for now.
**Nickname**: If the organization is commonly called something other than its official name, input it here. For instance, Saint Vincent Hospital's nickname could be "SVH."
**Notes**: This is a simple text box for preserving information that does not fit neatly into a format, and also should not be its own custom field. Often notes are bits of information specific to the organization, for instance, "Floor 12 supervisor is Mary."
**Website**: If the employer/organization has a website, it can be stored in this field.
# Tags
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/tag-lists
Create, manage, and use tags to manually group contacts for tracking and organizing.
## Overview
Tags let you manually group contacts for any reason -- people who go on break together, key targets for outreach, volunteers who handed out flyers last week, or any other ad-hoc grouping.
Once you create a tag, you can add or remove members, share it with other users, or make it inactive when you're done.
## The tags table
Click **Tags** in the left navigation panel to open the tags page.
The table is an interactive data grid with sortable, filterable columns:
| Column | Description |
| --------------------- | ------------------------------------------------------------------------------------------------------------------- |
| **Tag name** | The tag name, displayed as a colored badge, with an **actions menu** () for Edit and Delete |
| **Active?** | A toggle switch -- blue means active, gray means inactive |
| **Visibility** | Shared (visible to all users, shown in blue) or Personal (visible only to the owner, shown in green) |
| **Records tagged** | Number of contacts with this tag -- click the number to view them in a new tab |
| **Creator** | The user who created the tag |
| **Owner** | The user who owns a personal tag (blank for shared tags) |
| **Created date/time** | When the tag was created |
The toolbar includes a **New tag** button and a **Transfer tag** button (enabled when you select one or more tags using the checkboxes).
## Create a tag
1. On the tags page, click **New tag**.
2. Fill in the fields in the dialog that opens:
* **Name** -- A descriptive name for the tag.
* **Color** (Optional): Choose a badge color from the preset palette, or switch to the **Custom** tab to enter any hex code. Leave blank to derive the color automatically from the tag name.
* **Description** -- Optional notes about the tag's purpose.
* **Visibility** -- **Shared** (visible to all project users) or **Personal** (visible only to you).
3. Click **Save**.
The new tag appears in the table immediately without a page reload.
## Add or remove people
The most common way to add or remove people from a tag is through bulk actions on search results. Search for the contacts you want, select them, and use the **Add tag** or **Remove tag** bulk action.
See [Actions -- Add/remove tag](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-list) for step-by-step instructions.
## View tag members
Click the number in the **Records tagged** column to view all contacts with that tag. This opens a search results page filtered to show just the tag's members in a new tab.
From the search results, you can apply a layout to see the columns most useful to your work. See [Create and save a layout](/docs/customize/save-a-layout) for more on layouts.
## Search for a tag
You can search for a tag by typing `tag == "[name]"` into the search bar. This returns the contacts who have that tag. For example, to find everyone tagged "Steward", type `tag == "Steward"`. Quote the name when it contains spaces.
## Edit a tag
1. Click the **actions menu** () next to the tag name and select **Edit**.
2. Update the name, color, description, or visibility as needed in the dialog that opens.
3. Click **Save**.
You can only change the visibility of tags you created. If you're editing a tag created by another user, the visibility section shows a message instead of the Shared/Personal options.
## Make a tag inactive
If a tag is no longer useful for daily work, you can make it inactive rather than deleting it. Inactive tags are hidden from dropdown menus and navigation, but their members are preserved.
Click the toggle in the **Active?** column to switch the tag between Active and Inactive. The toggle updates immediately without leaving the page.
To find inactive tags, use the **Active?** column filter and select **Inactive**. You can reactivate a tag by clicking its toggle again.
## Transfer a tag
You can transfer one or more tags to another user. The transferred tag becomes a personal tag owned by that user and disappears from your view.
1. Select the tags you want to transfer using the checkboxes.
2. Click the **Transfer tag** button in the toolbar.
3. Search for and select the target user.
4. Click **Transfer**.
## Tags in search results
When a layout includes the **Tags (active)** column, each row shows colored badge buttons for every tag that person belongs to, grouped into **Personal tags** and **Shared tags** sections. Tags appear with the most recently assigned first.
### View a tag's details
Click any tag badge to open a **summary card** for that tag. The card shows:
* How many contacts are currently assigned to the tag, with a link to view them in a new tab.
* When the tag was created and by whom, and when it was last used.
* When the tag was applied to this specific contact, and by whom (for assignments made after assigner tracking was introduced).
### Add or remove tags from a contact
Users with edit permission see an **Add/edit tags...** button below the badges in each row. Clicking it opens the tag picker for that contact.
The tag picker groups tags into bands: **Recently used** (your most recently assigned tags), **Selected** (already assigned to this contact), **Personal** (your unassigned personal tags), and **Shared** (unassigned shared tags). Click a row to assign or unassign a tag. Type in the filter field to search by name.
You can also remove a tag by clicking its badge to open the summary card, then clicking **Remove tag**. A confirmation toast with an **Undo** button appears so you can reverse the removal within a few seconds.
### Create a tag from search results
To create a new tag directly from the search results page:
* In the tag picker, type a name that does not match any existing tag and press **Enter**, or click the **Add...** row that appears below your typed text.
* In a badge's summary card, click **New tag** in the top corner.
Both paths open the tag editor where you set the tag's name, color, visibility, and description. After saving, the new tag is automatically assigned to the contact you opened it from.
### Edit a tag from search results
Click any tag badge to open its summary card, then click **Edit tag** (non-readonly users only). This opens the tag editor where you can update the tag's name, color, visibility, or description. Changes apply everywhere the tag appears.
### Expand or collapse badges in a row
If a person belongs to more than 12 lists, the cell shows the first 12 badges and a **+N more** button. Click **+N more** to reveal all badges for that row, then click **Show less** to collapse back.
### Expand or collapse all rows at once
The **Tags (active)** column header includes two icon buttons:
* **Collapse all** — collapses every row to show only the first 12 badges.
* **Expand all** — expands every row to show all badges.
Your choice is saved so it persists when you reload the page. Individual rows can still be toggled independently after setting the column-wide default.
## Tag lists in the Quick view
The **Quick view** panel (opened by clicking the Quick view icon next to a contact's name in search results) includes a **Tags** section showing that contact's tag badges.
Users with edit permission see the **Tags** heading as a clickable button with a pencil icon (). Clicking it opens the full tag picker for that contact (the same picker as the **Add/edit tags...** button in the search results row). Readonly users see the tags but no edit affordances.
Clicking any tag badge in the Quick view opens the same summary card described in [View a tag's details](#view-a-tags-details) above, with the same **Remove tag**, **Edit tag**, and **New tag** actions available for users with edit permission.
## Delete a tag
1. Click the **actions menu** () next to the tag name and select **Delete**.
2. Confirm the deletion in the dialog that appears.
Deleting a tag removes it permanently. The contacts themselves are not deleted, but the tag cannot be recovered.
# Working with calculated columns
Source: https://help.broadstripes.com/docs/admin-guides/data-tools/working-with-calculated-columns
Create custom metrics that combine data from multiple Broadstripes fields for use in turf panels, layouts, and status reports.
## Overview
Calculated columns let administrators create custom metrics by combining or manipulating data from multiple Broadstripes fields. They update automatically when underlying data changes and work like any other column once created.
You can use calculated columns in:
* **Turf panels** — show COUNT columns as donut progress bars and SUM/CHECKOFFCOUNT columns as large standalone numbers
* **Status reports** — calculate totals, especially for time-based metrics like "cards signed in the last week"
* **Search result layouts** — list multiple values in a single column, such as each leader's hostile workers
## The calculated columns table
Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Calculated columns**. You can start typing to filter the list.
The settings page lists all calculated columns in your project.
The table displays:
| Column | Description |
| ---------------------- | -------------------------------------------------------------------- |
| **Name** | The column's display name |
| **Calculation type** | The type of calculation (COUNT, SUM, CHECKOFFCOUNT, etc.) |
| **Search Text** | The search query that defines what data to calculate |
| **Applies To** | Whether the column applies to organizations, people, or all contacts |
| **Show on Turf Panel** | A checkmark if the column appears on turf panels |
| **Created By** | The user who created the column |
| **Created At** | When the column was created |
Each row includes **edit** and **delete** links.
## Create a calculated column
1. On the **Calculated Columns** settings page, click the **+ New Calculated Column** button.
2. Fill in the form fields:
* **Name** — A short, descriptive name your users will recognize (e.g., "Cards Signed" or "Hostiles Led"). Names must be unique within the project.
* **Calculation type** — Choose how to calculate results:
| Type | Description |
| -------------------- | ---------------------------------------- |
| COUNT | Total number of matching contacts |
| SUM | Sum of a numeric custom field value |
| CHECKOFFCOUNT | Count of completed event check-off steps |
| FIRSTNAME | List of first names |
| FULLNAME | List of full names |
| FIRSTNAMELASTINITIAL | List of first names with last initial |
| NAME | List of names |
| HIERARCHICALNAME | List of names in hierarchical format |
* **Custom field for SUM** — Appears when you select **SUM**. Choose which numeric custom field to sum.
* **Events for CHECKOFFCOUNT** — Appears when you select **CHECKOFFCOUNT**. Choose which events to count check-offs for.
* **Search text** — The search query that defines which contacts to include in the calculation. Use the **Insert a token** dropdown to add tokens. See [Search text and tokens](#search-text-and-tokens) below.
* **Applies to** — Choose **Organization**, **Person**, or **All contacts**. This controls when the column displays data. For example, if set to **Organization**, the column only shows values when viewing an organization; it is blank for people.
* **Show on turf panel** — Check this box to display the column on all users' turf panels. COUNT columns appear as a donut progress bar (showing count and percentage); SUM and CHECKOFFCOUNT columns appear as a large standalone number. This option is only available when **Applies to** is set to **Organization**.
3. Click **Save Calculated Column**.
## Search text and tokens
The **Search text** field uses the same search syntax as the Broadstripes search bar. You can combine any search terms with special **tokens** — placeholders inside `{curly brackets}` — that tell Broadstripes how to group and calculate results.
### Available tokens
Use the **Insert a token** dropdown to add these tokens to your search text:
| Token | Purpose |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `{contact-broadstripes-id}` | Groups results by the unique contact ID. Use with field references like `employer =` or `leader =` to calculate per-contact. |
| `{contact-name}` | Substitutes the contact's name into the search. |
### Common search text patterns
**Count by employer (e.g., cards signed per location):**
```
cardsigned=yes employer={contact-broadstripes-id}
```
**Count with a time window (e.g., cards signed in the last week):**
```
employer = {contact-broadstripes-id} cardsigned > "one week ago"
```
Broadstripes understands natural language date phrases in search text, such as "one week ago," "two months ago," or "yesterday."
**List names by leader (e.g., hostile workers per leader):**
```
code > 2 leader = {contact-broadstripes-id}
```
## Edit a calculated column
1. On the **Calculated Columns** settings page, click **edit** next to the column you want to change.
2. Update the form fields as needed.
3. Click **Save Calculated Column**.
## Delete a calculated column
1. On the **Calculated Columns** settings page, click **delete** next to the column you want to remove.
2. A confirmation page appears. Click **Delete \[column name]** to permanently remove the column, or **Cancel** to go back.
Deleting a calculated column removes it from all turf panels, layouts, and status reports that use it. This action cannot be undone.
## Using calculated columns
Once created, calculated columns are available wherever you can select columns in Broadstripes.
### On the turf panel
If you check **Show on turf panel** when creating a column, it automatically appears on all users' turf panels. How it displays depends on the calculation type: COUNT columns show as a donut progress bar with the count and percentage; SUM and CHECKOFFCOUNT columns show as a large standalone number (since their totals don't represent a share of the worker count).
### In status reports
To add a calculated column to a status report:
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), choose **Status report definitions**, then click **edit** on the report you want to modify.
2. Click the **Columns** tab.
3. Select your calculated column from the **Calculated columns** section under **Available Columns**.
4. Configure the column label, orientation, and display format (count or percentage).
5. Click **Save**.
### In search result layouts
To add a calculated column to a search layout:
1. Run a search to display results.
2. Choose **Modify layout** from the **Layout** dropdown menu.
3. Click on your calculated column under **Other available columns** to add it.
4. Click **Save changes**.
# Bouncing emails
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/bouncing-emails
Find and re-enable BCC recipients on your public forms that email providers are rejecting
## Overview
The Bouncing emails page shows every email address that is currently undeliverable on your project's public forms. When an address you've added to a form's "Other recipients" (BCC) list starts bouncing -- meaning the email provider is rejecting messages to it -- Broadstripes records it here and stops sending to that address until you clear the suppression.
Use this page to see which addresses are affected, understand why they're bouncing, and re-enable delivery once the mailbox issue is fixed.
## Accessing the Bouncing emails page
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**).
2. Choose **Bouncing emails**. You can start typing to filter the list.
The page lists all BCC addresses on your project's public forms that are currently blocked. If no addresses are blocked, the table is empty.
## Understanding the table
Each row represents one blocked email address. The table includes the following columns:
| Column | Description |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Email address** | The blocked address. |
| **Action** | A **Re-enable delivery** button, plus a counter showing how many re-enable attempts have been used. |
| **Last bounce** | When the most recent delivery failure was recorded. |
| **Failures** | Total number of delivery failures recorded for this address. |
| **Source** | Which public form (or forms) has this address in its "Other recipients" list. Each source links directly to that form's settings. |
| **Reason** | The reason code reported by the email provider, if available. |
The table supports sorting and filtering on all columns. Use the **Source** filter to find all bouncing addresses related to a specific form.
## Re-enabling delivery
When a mailbox is fixed -- the address is corrected, the inbox is no longer full, or the provider has cleared its block -- you can ask Broadstripes to remove the suppression:
1. Find the address in the table.
2. Click **Re-enable delivery** in the Action column.
3. Confirm the action in the dialog that appears.
Broadstripes submits a job to clear the address from the email provider's suppression list. The button changes to **Re-enable requested** while the job runs. No email is sent at this point -- once the suppression clears, future public form submissions will resume delivering to that address.
Re-enabling delivery does not guarantee future messages will be accepted. If the underlying mailbox problem is not resolved, the address may bounce again and re-enter the suppression list.
### Re-enable limit
Each address has a limit on how many times delivery can be re-enabled. The Action column shows the current count (for example, "1 of 3 re-enables used"). When the limit is reached:
* **Regular users** see the button disabled. The counter shows "Max re-enables used" and a warning icon appears. Consider correcting or removing the address from the form's "Other recipients" field.
* **Project group admins** can re-enable past the limit, but a warning tooltip notes that the address may be permanently undeliverable. Use judgment before re-enabling repeatedly.
## Fixing the underlying problem
Re-enabling delivery clears the suppression, but the address may bounce again if the root cause is not resolved. Common causes and fixes:
* **Invalid address**: Correct the address in the form's Confirmation email tab > "Other recipients" field.
* **Full mailbox**: Ask the recipient to clear space, then re-enable.
* **Domain not found**: The domain no longer exists or was misspelled -- correct the address.
* **Spam block**: The recipient's mail server blocked Broadstripes as spam -- contact Broadstripes Support if this persists.
To update an address in a form, click the form name in the **Source** column to go directly to that form's settings.
## Relationship to the per-form Email tab
The Bouncing emails page is an aggregated view across all forms in the project. Each individual public form's **Confirmation email tab** also shows its own bouncing "Other recipients" addresses -- you can re-enable delivery from there too. Use whichever view is more convenient:
* Use the **Bouncing emails page** to see all blocked addresses across all forms at once.
* Use the **Confirmation email tab** to see and fix issues while editing a specific form.
## Next Steps
* [Confirmation email tab](./email-tab) -- Configure "Other recipients" and other email settings for a public form.
* [Public forms overview](./public-forms-overview) -- Learn how public forms work.
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms) -- See and download submitted form PDFs.
# First step: create a new public form
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/create-public-form
Learn how to create and name a new public form for collecting digital membership cards and other data
## Public forms creation
On the first page in this series, the [public forms overview page](./public-forms-overview), we looked at some of the different ways public forms could be used.
In this documentation, we'll create a public form to capture signed digital cards submitted by the members of a bargaining unit. To accomplish this we will need to:
1. Navigate to the Public forms page
2. Click the New Public Form button for a person
3. Name and configure the form
4. Select fields to include on the form
Before you start, think about whether the form you want to build will, when submitted, create or update a person record or an organization record (i.e. a shop or department) in Broadstripes. In most cases, public forms are used to create or update people, not organizations. Therefore, this documentation describes the creation of a digital card public form for a person.
## Step 1: Navigate to Public forms
To create a public form, you must be an admin in your project. As with most admin-only functionality, Broadstripes' **Public forms** index page is accessible from the Project settings menu.
1. Click the **Project settings** icon in the upper right corner of the app (or press **Ctrl-K** / **⌘K**)
2. Start typing "Public forms" to filter the list
3. Click the **Public forms** option
The Public forms index page displays a table of all your public forms with columns for name (with an actions dropdown menu where you can edit, duplicate, or delete an existing form), type (person or organization), link (copy or go to the URL to the form), enabled status (whether the form is enabled or disabled), submissions (how many times the form has been submitted), and creation information.
## Step 2: Start creating the form
On the Public forms index page, click one of the buttons to create a form:
* **New person form** - For individual contacts (workers, volunteers, members)
* **New org form** - For organization contacts (shops, departments, companies)
These buttons appear both at the top and bottom of the Public forms page.
Most campaigns use person forms for worker sign-ups and organizing. Organization forms are less common and typically used for employer/shop data collection. This documentation focuses on creating a person form.
You should now see the Public form editor.
## Step 3: Name your public form
The next step in building our form is to name it and configure basic settings in the public form editor.
Type the name of your form into the **Name** field input box.
**Choosing a good form name:**
The form name appears in the Broadstripes interface and helps you identify the form in the list. It does NOT appear on the public form itself (unless you do not indicate a form header).
Examples of good form names:
* "2025 Worker Interest Card"
* "Training Registration - March"
* "Shop Steward Application"
* "Volunteer Sign-Up"
* "Digital Membership Card"
Examples of names to avoid:
* "Form 1" (not descriptive)
* "Test" (unclear purpose)
* Generic names like "Card" (specify the year or campaign)
## Step 4: Enable the form for public access
Below the name field, the public-access card shows the **Enable this form for public access?** toggle, a **Live** or **Not public** status pill, and the form's permanent **public form link**.
Make sure the toggle is on. **If it is off, the form is inactive. Anyone who uses the permanent URL associated with this public form will not be able to complete the form.**
When enabled:
* The form is accessible via its public URL
* Anyone with the link can open, complete, and submit the form
* Form submissions are processed and create/update contacts
When disabled:
* The form URL shows an error message
* No submissions can be made
* Useful for temporarily pausing submissions or testing changes
**Important:** You can enable/disable forms at any time from the Public forms index page by toggling the checkbox in the Enabled column.
## Step 5: Configure duplicate matching
Below the public-access card, you'll see the **Attempt to match existing contacts** toggle.
When enabled (recommended):
* Broadstripes searches for existing contacts with matching email or phone number
* If found, the form submission updates the existing contact instead of creating a duplicate
* If not found, a new contact is created
* Helps keep your project data clean
When disabled:
* Always creates a new contact
* May result in duplicate contacts if someone submits multiple times
**How matching works:**
The matching process uses name fields and contact information (email and/or phone) to identify existing contacts. Name-matching uses "fuzzy logic," so "Thomas" will match "Tom" and "Tommy." At least one contact method (email OR phone) must match along with the name for a record match to be found.
If a match is found, the records are merged intelligently:
* Single-value fields (like assessment or custom dates) are updated with the new value
* Multi-value fields (like phones or emails) preserve both old and new values
## Step 6: Review the Form status panel
Below the matching toggle, the **Form status** panel summarizes two signals about how the form will behave. Hover over the **info icon** () next to either line for details.
**Record-matching: ON/OFF**
* Reflects the matching toggle above
* The info popover explains the fuzzy name matching logic and which fields are used for matching
**Email confirmation to form submitter: YES/NO/MAYBE**
* Shows whether submitters will receive a confirmation email, based on your settings in the [Confirmation email tab](./email-tab)
* MAYBE means the form does not require an email address, so a copy is sent only when the submitter provides one
* The info popover notes NLRB compliance requirements for authorization cards
## Step 7: Understand the form editor tabs
The form editor has a tabbed interface with six tabs — person forms show a **Workplace** tab, and organization forms show an **Organization** tab in its place. You'll configure different aspects of your form in each tab:
1. **Standard fields** - Select which standard fields appear on the form
2. **Timeline** - Configure automatic timeline entry creation
3. **Workplace** - Set up employer information collection (person forms only)
4. **Organization** - Allow submitters to select an existing organization from the project (organization forms only)
5. **Content and attachments** - Customize logo, header, introduction, legal text, signature field, and file attachments
6. **After submission** - Set the confirmation message, event steps, contact type, and PDF settings
7. **Confirmation email** - Configure confirmation emails to submitters and others
The Standard fields tab is selected by default when you first create a form.
## Step 8: Save your initial configuration
At this point, you might want to click the **Save** button at the bottom of the page. This will:
* Save the form with the name you entered
* Preserve the enabled/disabled status
* Generate the permanent public form URL
* Return you to the main Public forms page (index page)
**Why save now?**
* Ensures your form is created with the correct name
* Allows you to see the generated public URL
* Prevents losing work if your session times out
* You can continue editing later
You can continue editing without saving by moving to other tabs. All changes across all tabs are saved together when you click Save. However, it's good practice to save periodically, especially when making significant changes.
## Next steps: Customize your form
Your form has been created and is ready to be customized. The next step is to indicate which fields you want on your form. The best place to start is the [The "Standard fields" tab](./standard-fields-tab-in-public-form).
The following articles discuss the functional details of each tab on the public form editor:
**Configure what information to collect:**
* [The "Standard fields" tab](./standard-fields-tab-in-public-form) - Choose contact info fields, custom fields, and events
* [The "Timeline" tab](./timeline-tab) - Create timeline entries for organizing interactions
* [The "Workplace" tab](./employment-tab) - Collect employer/workplace information (person forms only)
* [The "Organization" tab](./organization-tab) - Allow submitters to select an existing organization (organization forms only)
**Customize appearance and communications:**
* [The "Content and attachments" tab](./form-content-tab) - Add logo, header text, introduction, legal agreement, signature field, and file attachments
* [The "Confirmation email" tab](./email-tab) - Set up confirmation emails with optional PDF attachments
**Configure after-submission options:**
* [The "After submission" tab](./other-options-tab) - Set the confirmation message, event steps, contact types, and PDF settings
**Manage and share your form:**
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms) - Access the public URL, test the form, and track submissions
# Confirmation email tab
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/email-tab
Configure email notifications and confirmations for public form submissions
# Overview
The Confirmation email tab configures automatic email notifications sent when someone submits your public form. You can send confirmation emails to form submitters, notify employers, and alert your organizing team--all automatically.
Email confirmations serve multiple purposes:
* Confirm receipt of the form submission
* Provide transparency to form submitters
* Meet NLRB compliance requirements (for union authorization cards)
* Notify relevant parties (organizers, employers, administrators)
* Include PDF copies of signed forms
## Configure email notifications for your public form
Follow these steps to set up email notifications:
### Step 1: Navigate to the Confirmation email tab
To get started, select the **Confirmation email tab** in the public form editor.
### Step 2: Choose who receives emails
At the top of the Confirmation email tab, you'll see **"Email recipients"** with recipient options that vary by form type. All forms show the form submitter option; organization forms show additional leader notification options; person forms show an employer notification option.
#### The form submitter (required for NLRB compliance)
Check this box to send a confirmation email to the person who submitted the form.
When enabled:
* An email is sent to the form submitter's email address
* Email uses the subject and body you configure below
* Can include form data and/or PDF attachment
* Serves as confirmation that the form was received
When disabled:
* No email is sent to the submitter
* Not recommended for most campaigns
**NLRB compliance note:**
For union organizing campaigns, NLRB regulations require that you provide form submitters with a copy of what they signed. Enabling this option and attaching a PDF satisfies this requirement.
**Best practice**: Always enable this option. It provides transparency, builds trust, and confirms to submitters that their form was received.
#### The organization's direct leader (if any) (organization forms only)
Check this box to send a notification email to the submitted organization's direct leader when the form is submitted. This option only appears for **organization forms**.
When enabled:
* An email is sent to the primary email address of the organization's assigned leader in Broadstripes
* The email uses the same subject, body, and attachment settings as the submitter confirmation email
* If the organization has no leader assigned, or if the leader has no primary email address, no email is sent
When disabled:
* No notification is sent to the organization's direct leader
**When to enable**:
* Forms where the organization's own leader should be notified of each submission
* Workflows where the direct leader needs to act on or acknowledge the submission
#### The organization's indirect leaders (people who lead parent orgs, if any) (organization forms only)
Check this box to send a notification email to the leaders of the submitted organization's parent organizations in the hierarchy. This option only appears for **organization forms**.
When enabled:
* An email is sent to the primary email address of each leader of the organization's ancestor organizations
* Leaders at multiple levels of the hierarchy receive the email (deduped so no one receives it twice)
* If no ancestor organizations have leaders with email addresses, no email is sent
When disabled:
* No notification is sent to leaders of parent organizations
**When to enable**:
* Campaigns where regional or national leaders need visibility into local submissions
* Hierarchical organizing structures where parent-org leadership tracks activity from child organizations
#### The specified employer
Check this box to send an email to the employer organization. This option only appears for **person forms** and only works when employment creation is enabled (see Workplace tab).
When enabled:
* An email is sent to the employer organization selected upon submission
* Email is sent to the organization's primary email address in Broadstripes
* Uses separate subject and body when **Use different content options for the employer email** is checked (configured in "Employer email content" section below)
When disabled:
* No employer notification is sent
**When to enable**:
* Shop steward election forms (to notify management)
* Forms where the employer needs to be informed
**When to disable**:
* General organizing (you don't want to tip off the employer)
* Interest cards (employer doesn't need to know)
* Most worker sign-ups
See the [Workplace tab](./employment-tab/) to enable and configure employment creation. If employment creation is disabled, this email option won't work because there's no employer to notify.
#### Use different content options for the employer email
Check this box if you want to customize the email sent to employers differently from the email sent to form submitters.
When enabled:
* A separate "Employer email content" section appears below
* You can customize employer emails with different subject, body, and attachment options
When disabled:
* Employer emails (if enabled) use the same content as submitter emails
* Simpler configuration
**When to enable**: Almost always, if you're sending employer emails. Employers need different information than form submitters.
### Step 3: Add other email recipients (optional)
In the **"Other recipients"** field, you can enter additional email addresses to receive a copy of the confirmation email.
**Format**: Enter email addresses separated by commas or semicolons
**Examples**:
```
organizer@union.org, admin@union.org
john@union.org, sarah@union.org, campaigns@union.org
```
**Inline validation**: As you type, Broadstripes highlights any addresses that do not look valid. The field border turns red and a message lists the specific tokens that failed -- for example, "This doesn't look like a valid email address: badentry". The form will not save while invalid addresses are present.
**Common uses**:
* Notify organizers when new sign-ups come in
* Send copies to campaign staff
* Alert support staff for follow-up
* BCC campaign leadership
**Best practices**:
* Don't add too many recipients (creates email overload)
* Consider using a shared inbox (like [campaigns@union.org](mailto:campaigns@union.org)) instead of individual addresses
* Recipients get the SAME email as the form submitter
### Undeliverable recipient addresses
If Broadstripes detects that an address in your **Other recipients** list is undeliverable -- meaning your mail service is dropping messages to it -- a warning appears directly below the Other recipients field on the Confirmation email tab. Common causes include a misspelled address or a mailbox that no longer exists.
When an address is flagged as undeliverable:
* An amber warning icon appears next to the form name on the Public forms list page.
* An amber warning icon also appears on the **Confirmation email** tab label in the form editor, so you can spot the problem without opening the tab.
* Inside the tab, a warning panel beneath the Other recipients field lists each affected address and confirms that messages to it are being dropped.
**Email notification**: Project group admins and the creators of any affected forms receive an email notification when Broadstripes first detects that an address is undeliverable.
#### What to do
The recommended action is to correct or remove the undeliverable address from the **Other recipients** field. Open the form's Confirmation email tab, update the field, and save.
If the address is correct and the mailbox has recently been fixed, you can attempt to re-enable delivery from the warning panel:
1. Open the form's Confirmation email tab.
2. Find the amber warning panel beneath the **Other recipients** field.
3. Click **Re-enable delivery** next to the address.
Broadstripes submits a request to clear the address from your mail service's suppression list. A confirmation message appears immediately; the warning clears the next time you reload the page once the re-enable request succeeds.
The button label changes to **Re-enable requested** after you click it and stays disabled for the rest of your session, even if the request fails. This prevents accidental double-clicks that would consume your retry allowance. Reload the page to re-evaluate the status.
**Retry limits**: Each address can be re-enabled up to 2 times. Once that limit is reached, the **Re-enable delivery** button is disabled for users without project group admin access. Project group admins can retry past the limit, but an advisory icon remains as a reminder that the address may be permanently undeliverable. If retries are exhausted, correct or remove the address.
### Step 4: Configure email content options
The Email content section controls what gets included in the confirmation email to form submitters.
**Append form content to email body**
Check this box to include the submitted form data at the bottom of the email body.
When enabled:
* The submitted form data is included at the bottom of the email body
* Shows field labels and values in a readable format
* Provides a text version of what was submitted
When disabled:
* Email only contains your custom message
* Cleaner, shorter email
**Best practices**:
* Enable this if you're NOT attaching a PDF (provides a record of submission)
* Disable this if you ARE attaching a PDF (prevents duplication)
* Enable for simple forms where seeing data inline is helpful
**Attach PDF of form to confirmation email**
Check this box to attach a PDF copy of the form submission to the confirmation email.
When enabled:
* A PDF is generated containing all submitted form data
* PDF is attached to the confirmation email
* PDF includes all fields, signature (if captured), and form branding
When disabled:
* No PDF attachment (email only contains text)
**Best practices**:
* Enable for union authorization cards (NLRB compliance)
* Enable for legal documents or contracts
* Enable for applications where users need a copy
* Disable for simple interest cards or casual sign-ups (faster processing, smaller emails)
PDFs are always generated and stored in Broadstripes, even if you don't attach them to emails. This option only controls whether the PDF is attached to the email.
### Step 5: Write the email subject and body
Customize the confirmation email message that form submitters will receive.
**Subject line**
In the **Subject** field, enter the subject line for the confirmation email.
**Examples**:
* "Thank you for your interest in organizing"
* "Your worker interest card has been received"
* "You're registered for the March meeting"
* "Welcome to the campaign"
* "Confirmation: Your application has been submitted"
**You can use merge fields** to personalize the subject line and body (see Merge Fields section below):
```
Thank you, %first_name%!
Your registration for %event_name% is confirmed
```
**Email body**
In the **Message** field (large text area), enter the main content of the confirmation email.
**Default**: If left blank, a generic message is sent
**Example email body**:
```
Hello %first_name%,
Thank you for filling out our worker interest card. An organizer will contact you soon to answer your questions and discuss next steps.
In the meantime, you can visit our website at www.ourcampaign.org to learn more about our efforts.
In solidarity,
The Organizing Committee
```
**Best practices**:
* Start with a personalized greeting using %first\_name% merge field
* Thank the submitter
* Set clear expectations about next steps
* Provide contact information if they have questions
* Include relevant links (website, Facebook group, etc.)
* Sign with organization name or organizer name
* Keep it brief—most people skim emails
### Step 6: Configure employer email content (if applicable)
This section only appears if you enabled both "Send email to employer" and "Use different content options for the employer email" checkboxes in Step 2.
**Append form content to employer email body**
Check this box to include the submitted form data in the email sent to the employer.
**Common configuration**:
* Enable for payroll deductions (employer needs to see the details)
* Disable for most other uses (employer doesn't need all the details)
**Attach PDF of form including signature image**
Check this box to attach a PDF of the full form submission to the employer email.
When enabled:
* PDF of the full form submission is attached to the employer email
* Includes signature image if captured
When disabled:
* No PDF attachment
**Employer email subject**
In the **Subject** field under Employer email content, enter the subject line for emails sent to employers.
**Examples**:
* "Shop steward election notice"
* "Employee authorization form submitted"
* "New grievance filed by %name%"
**Merge fields**: Same merge fields available as for submitter emails
**Employer email body**
In the **Message** field under Employer email content, enter the main content of the email sent to employers.
**Example employer email body for shop steward election**:
```
This is to notify you that %name% has been elected as shop steward for %department%.
As required by the collective bargaining agreement, management must be notified of shop steward elections.
For questions, contact the union at admin@union.org.
```
### Step 7: Save your work
Once you've configured your email settings, click **Save** or move on to the next tab to continue customizing your form.
## Merge Fields
Merge fields are placeholders that get replaced with actual data when the email is sent.
**Available merge fields:**
* **Name** - Full name of the recipient (or form submitter in this case)
* **First Name** - Recipient's first name
* **Nickname or First Name** - Uses nickname if available, otherwise first name
* **Title and Last Name** - Recipient's title (if available) and last name
* **Broadstripes ID** - Unique identifier for the recipient
* **Organizer Name** - Full name of the recipient's assigned organizer
* **Organizer First Name** - First name of assigned organizer
* **Department** - Recipient's department (if employment data exists)
* **Employer** - Recipient's employer organization
* **Sender Name** - Your full name (the person sending the email)
* **Sender First Name** - Your first name
* Custom fields specific to your project may also appear
**How to use merge fields**:
1. Click in the **Subject** or **Message** field to place your cursor, then click the ** Merge field** button above the message area and choose the field you want. The button shows which field it will insert into, and you can type in the popover's filter box to narrow the list.
2. Or manually type the merge field surrounded by percent signs (%)
3. The merge field is replaced with actual data when the email is sent
**Example without merge fields**:
```
Thank you for your interest! An organizer will be in touch soon.
```
**Example with merge fields**:
```
Hello %first-name%,
Thank you for expressing interest in organizing at %employer%. An organizer will contact you at %phone% within 48 hours.
```
**Best practices for merge fields**:
* Don't overuse—too many merge fields feels robotic
* Remember some fields may be blank—structure your message so it still makes sense
## Email Configuration Examples
**Basic Interest Card**
**Send email to**:
* ☑ The form submitter
* ☐ The specified employer
* Other recipients: [campaigns@union.org](mailto:campaigns@union.org)
**Email content**:
* ☐ Append form content to email body
* ☐ Attach PDF to email
* Subject: "Thank you for your interest, %first-name%"
* Body:
```
Hello %first-name%,
Thank you for filling out our interest card. An organizer will contact you soon to answer your questions.
In solidarity,
The Organizing Committee
```
***
**Union Authorization Card (NLRB Compliant)**
**Send email to**:
* ☑ The form submitter (required for NLRB compliance)
* ☐ The specified employer
* Other recipients: [organizers@union.org](mailto:organizers@union.org)
**Email content**:
* ☐ Append form content to email body
* ☑ Attach PDF to email (NLRB requirement)
* Subject: "Your union authorization card"
* Body:
```
Hello %first-name%,
Thank you for signing a union authorization card. Attached is a copy for your records.
Your signature authorizes the union to represent you. You have the right to revoke this authorization at any time by contacting us at revoke@union.org.
If you have questions, call us at (555) 123-4567.
In solidarity,
Local 1979
```
***
**Simple Event Registration**
**Send email to**:
* ☑ The form submitter
* ☐ The specified employer
* Other recipients: [events@union.org](mailto:events@union.org)
**Email content**:
* ☐ Append form content to email body
* ☐ Attach PDF to email
* Subject: "You're registered for %event-name%"
* Body:
```
Hi %first-name%,
You're all set for the March member meeting!
When: March 15, 2025 at 6:00 PM
Where: Union Hall, 123 Main Street
We'll send you a reminder 24 hours before the event.
See you there!
```
## Email Delivery Notes
**Timing**: Emails are sent within a few minutes of form submission (not instant, but very fast)
**From address**: Emails are sent from your organization's outgoing email address on behalf of your organization (Please reach out to support to ensure your email address is configured correctly)
**Reply-to**: The reply-to address is set to your organization's email (if configured)
**Testing**: Always submit a test form before launching to verify emails are sent and formatted correctly
## Best Practices
**Always send submitter confirmation**: Builds trust and provides transparency
**Keep emails brief**: Most people skim emails on their phones
**Set clear expectations**: Tell people what happens next and when
**Test thoroughly**: Submit test forms and check that emails are received and formatted correctly
**Use personalization wisely**: Merge fields are great, but don't overdo it
**Consider mobile**: Many people will read these emails on their phones
**Proofread carefully**: Emails go out automatically—typos affect many people
**Include contact information**: Give people a way to ask questions or get help
## Next Steps
* [The "After submission" tab](./other-options-tab) - Configure the confirmation message, event steps, contact type, and PDF settings
* [The "Content and attachments" tab](./form-content-tab) - Customize the form's appearance and enable file uploads
* [Viewing Forms](./viewing-and-downloading-public-forms) - See what your form looks like to users
* [The "Standard fields" tab](./standard-fields-tab-in-public-form) - Return to field selection
# Workplace tab
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/employment-tab
Configure employment relationships and associations for your public form submissions
# Overview
The **Workplace** tab allows you to create an employment relationship for each form submission. If you prefer not to, you can skip this tab and use the default settings.
The Workplace tab only appears for **person forms**. Organization forms do not have this tab.
## Why Collect Employment Information?
Employment relationships are central to labor organizing campaigns. Collecting employer information lets you:
* Link workers to their employers (shops, departments, companies)
* Build shop lists and organizational charts
* Identify shop leaders and organizers
* Generate shop-specific reports
* Send targeted communications to specific workplaces
* Track organizing progress by location
## Create an employment relationship on your public form
Follow these steps to configure employment collection on your public form:
### Step 1: Navigate to the Workplace tab
To get started, select the **Workplace tab** in the public form editor.
### Step 2: Enable employment creation
To include employment information, turn on the toggle in the **Workplace** card at the top of the tab ("Enable the worker submitting the form to identify where they work"). The record connected to the form submission will now be **associated with an employer**. The rest of the tab's options stay grayed out until this toggle is on.
When enabled:
* An "Employer" field appears on the public form
* The submitter provides their employer information
* An employment relationship is created automatically
* The worker is linked to the organization in Broadstripes
When unchecked, no employer information is collected.
### Step 3: Create a custom label
Create a descriptive label for the employment input section using the **Custom label** field.
**Default**: "Employer"
**Custom label examples**:
* "Where do you work?"
* "Your employer"
* "Company name"
* "Shop name"
* "Worksite"
Choose language your audience will understand. "Where do you work?" is clearer than "Employer" for most workers.
### Step 4: Choose the matching method
Next, use the **"Choose the method by which the workplace for the employment will be identified:"** dropdown. This dropdown controls HOW workers will identify their employer on the form.
Four options are available:
#### Tiered drop-downs
The form recipient will select their employment information via drop-down menus, starting with the highest level of employment and then department and subdepartment, if applicable.
**How it works**:
* Multiple dropdown menus appear on the form
* First dropdown shows parent organizations
* Second dropdown shows child organizations within the selected parent
* Additional dropdowns may appear for deeper hierarchies
**Best for**:
* Campaigns with clear organizational hierarchies
* Large employers with multiple locations or departments
**Example**:
* First dropdown: Select your division (Northeast, Southeast, Central, West)
* Second dropdown: Select your facility (lists facilities in chosen division)
**Advantages**:
* Prevents typos and variations in employer names
* Forces structured data entry
* Easy for workers when hierarchy is clear
**Disadvantages**:
* Can be slow if hierarchy is deep or complex
* May confuse workers unfamiliar with the corporate structure
#### External system
Broadstripes will use the [external system](/docs/project-settings/external-systems-settings) you choose to make an employment association. You will also choose which external system value will be matched.
**How it works**:
* A single text input field appears
* Worker enters an identifier from an external system (employer ID, shop number, etc.)
* Broadstripes matches the identifier to an existing organization
**Configuration**:
When you select this option, you must also select which external system to use from the **"Choose the external system value that will entered to match the workplace:"** dropdown. This shows all external systems configured for your project.
**Best for**:
* Workers who know their employer ID or shop code
* Campaigns with integrated payroll or HR systems
* When you've imported organization data with external IDs
**Example**:
* Custom label: "Employee ID"
* External system: "Payroll System"
* Worker types: "E12345"
* Broadstripes finds the organization with external system ID "E12345"
**Advantages**:
* Fast for workers who know their ID
* Works well with HR system integrations
**Disadvantages**:
* Workers must know their ID
* Requires external system setup in Broadstripes
* Creates errors if worker enters wrong ID
#### Autocomplete
Broadstripes will automatically match existing shops/departments to recipients' input.
**How it works**:
* A single text input field appears with autocomplete
* As the worker types, matching organization names appear
* Worker selects their employer from the list
* Matches against organization names at ALL levels of hierarchy
**Best for**:
* Campaigns with many employers
* Workers who know their employer's name but not the formal hierarchy
* Mobile-friendly forms (less tapping than tiered dropdowns)
**Example**:
* Worker types "acme"
* Autocomplete shows: "Acme Corporation", "Acme West", "Acme Manufacturing"
* Worker selects the correct one
**Advantages**:
* Fast and intuitive
* Works on mobile devices
* No need to understand organizational hierarchy
**Disadvantages**:
* May show too many results for common names
#### Autocomplete, matching only against the lowest level of shop structure
A form of auto-matching that will only match on departments at the lowest level (works best for projects with unique department names).
**How it works**:
* Same as Autocomplete above, but...
* ONLY matches organization names at the lowest (leaf) level of the hierarchy
* Excludes parent organizations from autocomplete results
**Best for**:
* Campaigns where workers should only be employed at specific locations, not parent companies
* Avoiding confusion between "Acme Corporation" (parent) and "Acme Plant 3" (actual worksite)
* Ensuring workers are linked to the most specific level
**Example**:
* Organization hierarchy: Acme Corp → Acme Northeast → Acme Plant 3
* Regular autocomplete would show all three when typing "acme"
* Leaf node autocomplete ONLY shows "Acme Plant 3"
**Advantages**:
* Prevents workers from selecting parent organizations inappropriately
* Ensures precise location data
* Cleaner autocomplete results
**Disadvantages**:
* Requires well-structured organization hierarchy in Broadstripes
* May not show any results if hierarchy isn't set up correctly
* Can confuse workers if the "leaf node" isn't how they think of their employer
### Step 5: Configure employer email notifications (optional)
A form can be set to automatically send the employer a copy of the recipient's form submission. You will configure this option on the [Confirmation email tab](./email-tab). This will require you to have contact information for the employer in your project, specifically an email address.
See the Confirmation email tab to enable automatic email messages to employers and others after form submission.
### Step 6: Enable multiple employments (optional)
Under the **Multiple employments** heading, check the **"Enable submitters to identify multiple workplaces (creating multiple employments)"** box to enable form recipients to create multiple employment relationships.
When enabled:
* Workers can add more than one employer on the form
* A link appears allowing them to add additional employments
* Useful for workers with multiple jobs or who work at multiple locations
When disabled (default):
* Workers can only specify one employer
* Simpler form experience
In the **"Text for link that creates additional employments"** field, enter a custom label for the link that allows them to add additional employments.
**Default**: "Add another"
**Example alternatives**:
* "Add another job"
* "Add second workplace"
### Step 7: Save your work
Once you've configured your employment options, click **Save** or move on to the next tab to continue customizing your form.
## Common Configuration Examples
**Basic Manufacturing Shop Organizing**
**Configuration**:
* ☑ Create an employment
* Custom label: "Where do you work?"
* Selection method: Autocomplete (leaf node only)
* ☐ Allow multiple employments: No
**Result**: Simple, fast form where workers type their shop name and select from list.
**Large Multi-Site Employer**
**Configuration**:
* ☑ Create an employment
* Custom label: "Your location"
* Selection method: Tiered drop-downs
* ☐ Allow multiple employments: No
**Result**: Workers select from structured list of divisions and facilities.
**Industry with Many Casual Workers**
**Configuration**:
* ☑ Create an employment
* Custom label: "Current employer"
* Selection method: Autocomplete
* ☑ Allow multiple employments: Yes
* Additional employment label: "Add another job"
**Result**: Workers can add multiple employers where they currently work.
### Integrated HR external system IDs
**Configuration**:
* ☑ Create an employment
* Custom label: "Employer ID"
* Selection method: External system
* External system: "HR System"
* ☐ Allow multiple employments: No
**Result**: Workers enter their employer ID, and the system finds their employer automatically.
## Best Practices
**Match your selection method to your data**: If you have a clean organization hierarchy in Broadstripes, use tiered dropdowns. If not, autocomplete works better.
**Test with real workers**: What makes sense to you may confuse workers. Test the form with actual members of your audience.
**Consider mobile users**: Autocomplete works better on mobile than deep tiered dropdowns.
**Set up organizations first**: Employment matching only works if the employer organizations already exist in Broadstripes. Import or create them before launching your form.
**Use clear labels**: "Where do you work?" is clearer than "Employing organization" for most audiences.
## Next Steps
Here are links to the other documentation pages for public forms:
* [Create a new public form](./create-public-form)
* [The "Standard fields" tab](./standard-fields-tab-in-public-form)
* [The "Timeline" tab](./timeline-tab)
* [The "Content and attachments" tab](./form-content-tab)
* [The "Confirmation email" tab](./email-tab)
* [The "After submission" tab](./other-options-tab)
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms)
# Content and attachments tab
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/form-content-tab
Customize your public form with logos, styling, links, content elements, and file attachments
# Overview
On the **Content and attachments tab**, you can add additional content and fields to a public form including your organization's **logo**, **website links** and **custom style elements**. You can also allow submitters to upload file attachments.
The Content and attachments tab controls the visual appearance and text content of your public form. This is where you customize what form submitters see when they open your form.
## Add a logo and other content
Follow these steps to customize the visual and textual content of your public form:
### Step 1: Navigate to the Content and attachments tab
To get started, select the **Content and attachments tab** in the public form editor.
### Step 2: Add a logo image
Add a **logo image** by clicking the dashed **Add a logo** tile and uploading your organization's logo, or by dragging an image file onto the tile. This will appear at the top of your public form. Horizontal banners tend to look best. The image should have a maximum width of 640px and a maximum height of 100px.
**To upload a logo**:
1. Click the **Add a logo** tile (or drag an image file onto it)
2. Navigate to your logo file on your computer
3. Select the image file
4. Click **Save** at the bottom of the form editor
**To remove a logo**:
1. Click **Remove** below the logo preview
2. Click **Save** at the bottom of the form editor
**To replace a logo**:
1. Click **Replace** below the logo preview and select a new logo
2. The new logo will replace the old one when you save
**Supported formats**: JPG, PNG, GIF
**Recommended size**: Maximum width of 640px and maximum height of 100px
**File size**: Keep the file small for the best experience on a mobile device
When you duplicate a form, the system attempts to copy the logo. If logo copying fails, you'll see a warning message and will need to re-upload the logo to the duplicated form.
### Step 3: Add Header Text
Below the logo, you can enter **Header Text**. This could be your organization's tagline or any title of your choosing.
This is the main title that appears at the top of your form, below the logo (if you uploaded one).
**Default**: If you leave this blank, the form NAME (from the top of the form editor) is used as the header.
**Examples**:
* "Worker Interest Card"
* "Join Our Campaign"
* "2025 Training Registration"
* "Tell Us Your Story"
* "Sign Up to Learn More"
**Best practices**:
* Keep it short (under 10 words)
* Use action-oriented language
* Make it welcoming and clear about the form's purpose
* Consider your audience's language and perspective
### Step 4: Add Introduction text
In the **Introduction** field, add a brief explanation or instructions for the form recipients. This is a good place to tell them what actions to take with the form.
This text appears below the header and above the form fields. Use it to:
* Explain the purpose of the form
* Set expectations (how long it takes, what happens next)
* Provide context or motivation
* Include any necessary disclaimers
**Example for a worker interest card**:
```
We're building a movement for better wages and working conditions. Fill out this form to join us and receive updates about our campaign. This form takes about 2 minutes to complete.
```
**Example for event registration**:
```
Join us for our monthly member meeting on March 15th at 6 PM. Fill out this form to RSVP and receive event details and reminders.
```
**Example for volunteer sign-up**:
```
Want to get involved? We need volunteers for phone banking, door knocking, and event support. Tell us what interests you and we'll be in touch with opportunities to get involved.
```
**Formatting**:
* The introduction text supports line breaks
* Keep paragraphs short for readability
* Consider bullet points for multiple ideas
* Don't make it too long--most people won't read more than 2-3 short paragraphs
**Best practices**:
* Answer "What is this for?" and "Why should I fill this out?"
* Set realistic time expectations
* Mention what happens after submission
* Use welcoming, inclusive language
* If required by law, include NLRB disclaimer: "Filling out this form does not obligate you to do anything or join anything."
## Customize your form with links and HTML styling
The **Introduction** text, **Form submission button text**, and **Legal agreement** fields support hyperlinks and HTML tags, allowing you to format and style your text.
For additional styling needs, please contact in-app support or [support@broadstripes.com](mailto:support@broadstripes.com)
### Step 5: Customize the submission button
Customize your form's **submission button** with a call to action. Create your custom text for submitting in the **"Form submission button text"** field.
This is the label on the button that submits the form.
**Default**: "Submit"
**Example alternatives**:
* "Join Us"
* "Sign Up"
* "Register"
* "Submit My Interest Card"
* "Count Me In"
* "I'm Interested"
* "Save My Information"
**Best practices**:
* Use action language that reflects what the user is doing
* Keep it short (1-3 words)
* Match the tone of your campaign
* Consider what commitment level you're asking for (avoid "JOIN THE UNION" if this is just an interest card)
### Step 6: Add a signature field (optional)
Select the **"Show signature field"** checkbox to allow submitters to sign the form using their mouse or finger.
When enabled:
* A signature capture field appears near the bottom of the form (above the submit button)
* Users can draw their signature with a mouse (desktop) or finger (mobile)
* A "clear" link allows redoing the signature
* Instructions appear: "Use your mouse (or your finger on a phone or tablet) to enter your signature above"
* The signature is captured as an image and included in the PDF
When disabled:
* No signature field appears
* Form submission is faster and simpler
**When to enable**:
* Union authorization cards (may be legally required)
* Legal agreements or waivers
* Forms where you need proof of identity
* Official applications or nominations
**When to disable**:
* General interest forms
* Event registrations
* Casual sign-ups
* Any form where signature isn't legally or procedurally necessary
If you enable the signature field, most users will expect it to be required even if you don't mark it as required. Consider this when designing your form flow.
### Step 7: Add a Legal agreement (optional)
You also have the option of including a section for a **Legal agreement** that a recipient must check before submitting the public form. Check the Legal agreement checkbox and enter the **text** of your agreement in the box below.
This section has two parts: a checkbox to enable the legal agreement, and a text area for the agreement text.
**To add a legal agreement**:
1. Check the box next to **Legal agreement**
2. Enter your agreement text in the **Legal agreement text** text area
3. The legal agreement will be added to your selected fields
4. Mark it as required in the "Selected fields" panel on the Standard fields tab
**How it appears on the form**:
* The legal agreement text displays near the bottom of the form (above signature if enabled)
* A checkbox appears next to or below the text
* The user must check the box to submit the form (if marked as required)
**Legal agreement text** field:
* Large text area for your agreement language
* Supports line breaks
* Supports HTML for formatting
* Placeholder: "I agree that..."
**Common legal agreement examples**:
For union authorization cards:
```
I authorize [Union Name] to represent me in collective bargaining with my employer concerning wages, hours, and working conditions. I understand that this authorization is voluntary and that filling out this form does not obligate me to join the union or pay any fees or dues.
```
For general interest forms:
```
I understand that [Organization Name] will use the information I provide to contact me about campaign activities and events. I can opt out of communications at any time.
```
For NLRB compliance (elections):
```
I understand that signing this card does not obligate me to vote for the union in an NLRB election or to become a union member. I understand that federal law protects my right to sign or not sign this card.
```
**Best practices**:
* Keep legal language as simple as possible
* Break complex agreements into short paragraphs or bullet points
* Consult with legal counsel for union authorization cards
* Include required NLRB disclaimers if applicable
* Don't use legal agreements for casual sign-up forms--they reduce completion rates
**Positioning**:
* Legal agreement text appears in the order you set in "Selected fields" on the Standard fields tab
* It typically appears near the end of the form
* Most campaigns place it just before the signature field (if enabled) or just before the submit button
### Step 8: Enable file attachments (optional)
Check the **"Allow submitter to upload files up to 10 MB"** box to let users attach files to the form submission.
Supported file types include:
* Most image/video files
* MS Office files
* OpenOffice files
* PDF
* Plain text
When enabled:
* A file upload field appears on the public form
* Users can select and upload files
* Maximum file size: 10MB per file
* Uploaded files attach to the contact record in Broadstripes
When disabled:
* No file upload option on the form
**When to enable**:
* Photo uploads for badges or profiles
* Document submission for grievances or complaints
* Supporting materials for applications or requests
**When to skip**:
* Simple interest cards or sign-ups
* Forms where attachments aren't relevant
* Concerns about inappropriate file uploads
Files are scanned and stored securely. Project members can view and manage attachments in the contact record. When you enable attachments, the attachment field is automatically added to your form's selected fields. You control where it appears by dragging it in the "Selected fields" panel.
#### Allow multiple attachments
To permit multiple file uploads (with a total size limit of 10 MB), check the **"Allow multiple attachments"** box.
This checkbox only appears if **Allow submitter to upload files** is enabled.
When enabled:
* Users can upload more than one file
* An "Add another file" button appears after selecting a file
* All uploaded files attach to the contact record
When disabled:
* Users can only upload one file
* Simpler interface
**When to enable**:
* Resume + cover letter uploads
* Multiple supporting documents
* Photo galleries
* Any scenario where one file isn't enough
**When to skip**:
* Most forms only need single file upload
* Reduces complexity for users
#### Custom label for attachment field
You can also enter a descriptive label for the attachment field to inform form submitters about what kind of file(s) they should upload.
This setting only appears if **Allow submitter to upload files** is enabled.
**Default label**: "Attachments"
**Custom label examples**:
* "Upload your document"
* "Profile photo"
* "Supporting documents"
* "Proof of employment"
* "Badge photo"
**Best practice**: Use clear, specific labels that tell users exactly what kind of file to upload.
### Step 9: Save your work
**Save** or move on to the next tab to continue customizing your public form.
## How Content Appears on the Form
When someone opens your public form, they see (in order):
1. **Logo** (if uploaded) - centered at top
2. **Header text** - main title
3. **Introduction text** - explanatory paragraph(s)
4. **Required field notice** - "Fields marked with an asterisk (\*) are required"
5. **Form fields** - in the order you configured
6. **Legal agreement text** (if enabled this will appear in the order you set in "Selected fields" on the Standard fields tab) - with checkbox
7. **Signature field** (if enabled) - with canvas and "clear" link
8. **Submit button** - with your custom button text
## How Attachments Work
When a form with attachments enabled is submitted:
1. **File upload**: User selects file(s) from their device
2. **Validation**: Broadstripes checks file size (must be under 10MB)
3. **Storage**: Files are uploaded to secure storage
4. **Attachment record**: An attachment record is created and linked to the contact
5. **Availability**: Files appear in the contact's Attachments section in Broadstripes
**Viewing attachments**:
* Go to the contact record in Broadstripes
* Click the Attachments tab
* All form-submitted files appear along with any other attachments for the contact
**File formats supported**: Most common file formats (PDF, DOCX, JPG, PNG, etc.)
**File size limit**: 10MB per file (enforced at upload time)
## Testing Your Form Content
Before sharing your form widely:
1. Click **Save** to save your content changes
2. Copy the public form URL from the Public forms page
3. Open the URL in a private/incognito browser window
4. Review all the content:
* Does the logo display correctly?
* Is the header clear and welcoming?
* Does the introduction provide enough context?
* Is the legal agreement text clear and accurate?
* Does the submit button text make sense?
5. Submit a test entry
6. Check the confirmation message (configured in the **After submission tab**)
**View on mobile**: Many people will complete your form on a phone. Test on a mobile device or use your browser's mobile device emulation to ensure everything displays correctly.
## Accessibility Considerations
**Clear headings**: The header text becomes the main heading for screen readers
**Simple language**: Keep introduction text clear and concise for all literacy levels
**Legal agreement readability**: Break complex legal text into short paragraphs
**Signature field**: Includes clear instructions for all users
## Common Scenarios
### Basic Interest Card
* Logo: Union logo
* Header: "Worker Interest Card"
* Introduction: "Want to learn more about organizing for better conditions? Fill out this card and an organizer will contact you."
* Button: "Submit"
* Signature: Disabled
* Legal agreement: None
### Union Authorization Card
* Logo: Union logo
* Header: "Union Authorization Card"
* Introduction: "By signing this card, you're authorizing \[Union] to represent you. Your signature does not obligate you to join the union or vote yes in an election."
* Button: "Sign Card"
* Signature: Enabled
* Legal agreement: Full NLRB-compliant authorization language
### Event Registration
* Logo: Campaign logo
* Header: "March Member Meeting"
* Introduction: "Join us March 15th at 6 PM for our monthly meeting. We'll discuss upcoming actions and vote on proposals. Dinner will be provided."
* Button: "Register"
* Signature: Disabled
* Legal agreement: None
### Volunteer Sign-Up
* Logo: Organization logo
* Header: "Get Involved"
* Introduction: "We need volunteers for phone banking, door knocking, and event support. Sign up and we'll match you with opportunities that fit your schedule and interests."
* Button: "Sign Up"
* Signature: Disabled
* Legal agreement: None
## Next Steps
Here are links to the other documentation pages for public forms:
* [Create a new public form](./create-public-form)
* [The "Standard fields" tab](./standard-fields-tab-in-public-form)
* [The "Timeline" tab](./timeline-tab)
* [The "Workplace" tab](./employment-tab)
* [The "Confirmation email" tab](./email-tab)
* [The "After submission" tab](./other-options-tab)
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms)
# Organization tab
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/organization-tab
Configure an organization picker on organization public forms so submitters can select an existing organization from your project
# Overview
The **Organization** tab allows you to add an organization picker field to your public form. When enabled, form submitters can search for and select an existing organization from your project rather than entering free text.
The Organization tab only appears for **organization forms**. Person forms do not have this tab.
## Why add an organization picker?
An organization picker is useful when you want form submitters to associate themselves or their submission with an organization that already exists in your project. For example:
* An employer wanting to register their company
* A shop representative identifying their workplace
* A community member selecting their neighborhood association
Without an org picker, submitters cannot link their submission to an existing organization record. The picker ensures form submissions are tied to the correct, pre-existing organization in Broadstripes rather than creating unmatched or duplicate records.
## Configure the organization picker
Follow these steps to set up an organization picker on your public form:
### Step 1: Navigate to the Organization tab
Open the public form editor and select the **Organization tab**.
### Step 2: Enable the organization picker
Turn on the toggle in the **Organization selection** card at the top of the tab ("Let submitters pick an existing organization from the project") to add the org picker field to your form. The **Custom label** and selection-method options below stay grayed out until this toggle is on.
When enabled:
* An organization search field appears on the public form
* Submitters can search for and select an organization from your project
* The selected organization is recorded with the form submission
When unchecked, no organization picker is shown on the form.
### Step 3: Set a custom label (optional)
Enter a descriptive label for the organization picker field using the **Custom label** field.
**Default**: "Organization"
**Custom label examples**:
* "Your workplace"
* "Select your employer"
* "Which chapter are you with?"
* "Your local"
Use language your audience will recognize. If your submitters think of organizations as "shops" or "chapters," use those terms instead of the generic "Organization."
### Step 4: Choose the selection method
Use the **"Choose the method by which the organization will be selected"** dropdown to control how submitters search for their organization.
Three options are available:
#### Tiered drop-downs
Submitters choose from cascading dropdown menus, starting at the top of the organization hierarchy and drilling down to sub-organizations.
**How it works**:
* Multiple dropdown menus appear on the form
* The first dropdown shows top-level organizations
* Subsequent dropdowns show child organizations within the selected parent
* The hierarchy depth matches your project's organization structure
**Best for**:
* Projects with a clear, well-known organizational hierarchy
* Forms where you want to guide submitters step-by-step through the structure
**Advantages**:
* Structured data entry prevents typos and name variations
* Works well when submitters know their place in the hierarchy
**Disadvantages**:
* Can be slow or confusing if the hierarchy is deep or unfamiliar to submitters
#### Autocomplete
Submitters type into a search field and select a matching organization from the suggestions. Matches against organization names at all levels of the hierarchy.
**How it works**:
* A text input with autocomplete appears on the form
* As the submitter types, matching organization names appear in a dropdown
* The submitter selects their organization from the list
**Best for**:
* Projects with many organizations
* Submitters who know their organization's name but not its place in the hierarchy
* Mobile-friendly forms
**Example**:
* Submitter types "union"
* Autocomplete shows: "Union Local 42", "Tri-State Union", "Union Hall West"
* Submitter selects the correct one
**Advantages**:
* Fast and intuitive
* No need to understand the full organizational hierarchy
#### Autocomplete, matching only against the lowest level of the org structure
A variant of autocomplete that only suggests organizations at the lowest (leaf) level of the hierarchy. Parent and intermediate organizations are excluded from the results.
**How it works**:
* Same text-input autocomplete as above, but search results only include organizations with no children
**Best for**:
* Projects where submitters should always be linked to a specific location rather than a parent umbrella organization
* Avoiding ambiguity when parent and child organizations have similar names
**Example**:
* Organization hierarchy: Regional Council > Local 42 > Shop Floor B
* Regular autocomplete would show all three when the submitter types "42"
* Leaf node autocomplete only shows "Shop Floor B"
**Advantages**:
* Prevents submitters from accidentally selecting a parent instead of their specific location
* Produces cleaner, more precise data
**Disadvantages**:
* Requires a well-structured organization hierarchy in Broadstripes
* May return no results if the hierarchy has not been set up correctly
### Step 5: Position the field on the form
After saving the Organization tab settings, the organization picker field appears in the **Standard fields** tab as an item in the selected fields panel. You can drag it to reorder it relative to other fields on the form.
### Step 6: Save your work
Click **Save** to apply your changes. The organization picker will now appear on the public form.
## How the field appears on the submitted form summary
After a submitter completes the form, the confirmation summary page shows the selected organization. If you chose **Autocomplete** or **Tiered drop-downs**, the full hierarchical name is displayed. If you chose **Leaf node autocomplete**, only the organization's own name is shown.
## Next steps
Here are links to the other documentation pages for public forms:
* [Create a new public form](./create-public-form)
* [The "Standard fields" tab](./standard-fields-tab-in-public-form)
* [The "Timeline" tab](./timeline-tab)
* [The "Workplace" tab](./employment-tab) *(person forms only)*
* [The "Content and attachments" tab](./form-content-tab)
* [The "Confirmation email" tab](./email-tab)
* [The "After submission" tab](./other-options-tab)
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms)
# After submission tab
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/other-options-tab
Configure what happens after a form is submitted, including the confirmation message, event steps, contact type, and PDF settings
# Overview
The **After submission** tab configures what happens once a form is submitted: the message the submitter sees, plus the record-side outcomes -- the event step automatically applied, the contact type assigned to the created record, and the confirmation PDF saved to that record.
Key features you can configure:
* Set the success message shown to the submitter after a successful submission
* Automatically apply event steps when forms are submitted
* Set the contact type for new and matched contacts
* Control PDF formatting (filename and show or hide blank fields)
## Configure after-submission options for your public form
Follow these steps to set up after-submission options:
### Step 1: Navigate to the After submission tab
To get started, select the **After submission tab** in the public form editor.
### Step 2: Set a successful submission message (optional)
In the **"Successful submission message"** field, enter the message that will appear after the recipient submits the public form. This could be a simple thank you or additional instructions.
This text displays on the confirmation page after someone successfully submits the form.
**Example custom messages**:
After interest card submission:
```
Thank you for your interest! An organizer will be in touch soon to answer your questions and discuss next steps.
```
After event registration:
```
You're registered! We'll send you event details and a reminder email 24 hours before the event.
```
After volunteer sign-up:
```
Thanks for signing up to volunteer! We'll email you with opportunities to get involved in the next few days.
```
**Best practices**:
* Confirm that the submission was successful
* Set expectations about next steps ("We'll contact you within X days")
* Thank the submitter
* Keep it brief -- 1-3 short sentences
### Step 3: Set an event step (optional)
In the **"Automatically check event step"** drop-down menu, select an event step that will automatically be applied to the contact record upon form submission.
This dropdown lists all active events and event steps configured in your campaign. You can choose from any event steps currently in your project. If you need to create a new event, refer to [this article](/docs/admin-guides/data-tools/creating-an-event) for instructions.
**How it works**:
When someone submits the form:
1. The contact record is created or updated
2. The selected event step is automatically applied to the contact
3. The contact's event status is updated accordingly
**Example uses**:
* Mark all form submitters as "Attended Training" if this is a training registration
* Set status to "Interested" for interest card submissions
* Apply "Contacted" status for cold contact forms
* Mark as "Recruited" when someone signs up through an organizer's unique link
**When to use**:
* You want to track form submissions as a specific milestone
* The form represents a specific stage in your organizing pipeline
* You want submitters to appear in reports filtered by event step
**When to skip**:
* The form is general-purpose and doesn't represent a specific event
* You'll manually set event steps after reviewing submissions
* Event tracking isn't relevant to this form
The dropdown only shows events marked as "active" in the Events page. If you don't see the event you need, go to **Events** in the left navigation and ensure the event is activated.
### Step 4: Select the contact type
Next, select the contact type that will be created or matched when the form is submitted. The data submitted in the form will be created as this contact type.
This dropdown controls which contact type is assigned to the contact after form submission.
**Options**:
1. **Person** or **Organization** (default) - Contact type matches the form type
2. **Any internal contact type** - Choose from your project's configured contact types
**How it works**:
* By default, person forms create contacts with "Person" contact type
* By default, organization forms create contacts with "Organization" contact type
* But you can override this to use a specific contact type instead
**Example uses**:
* "Volunteer" form creates contacts with "Volunteer" contact type
* "Member" form creates contacts with "Member" contact type
* "Prospective Member" form creates contacts with "Prospective Member" contact type
**Why change from default**:
* Contact types help you categorize and filter contacts in Broadstripes
* Reports and searches can filter by contact type
* Different contact types may require different workflows
Keep in mind that both new and merged records will be converted to this contact type. This is called "final contact type" because it's the type assigned AFTER the form processes. The system always creates the contact first, then changes the contact type to your selection.
The dropdown only shows contact types configured for your project. If you need a new contact type, create it before configuring your form: click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Contact types**.
### Step 5: Configure the confirmation PDF
A PDF of each submission is generated and saved to the contact record. You can customize its filename and contents.
#### Hide blank fields on the PDF
If you prefer not to show any fields that were left blank on the form, check the **"Hide blank fields on the PDF"** box. This will remove any empty fields from the final PDF.
This controls how the generated PDF displays form data.
When enabled:
* Fields that were left empty by the submitter don't appear in the PDF
* Cleaner, more compact PDF
* Only shows data that was actually provided
When disabled:
* All form fields appear in the PDF, even if empty
* Empty fields show as blank lines or "\[no data]"
* Longer PDF that shows the complete form structure
**Recommendation**:
* Enable for most forms (cleaner PDFs)
* Disable if you need to see the full form structure even for blank fields (audit purposes)
#### Customize the PDF filename (optional)
You can customize how generated PDF files are named by creating a filename pattern using tokens. Tokens are placeholders that get replaced with actual values when the PDF is generated.
##### Insert tokens using the dropdown
Click the **Insert token** button to open a dropdown menu with available tokens:
**System tokens** (always available):
* **First name** - Submitter's first name
* **Last name** - Submitter's last name
* **Date (YYYY-MM-DD)** - Submission date (e.g., 2026-02-09)
* **Time (HH-MM-SS-AM/PM-TZ)** - Submission time (e.g., 10-30-45-AM-EST)
**Form field tokens** (based on your selected fields):
* Any field you've added to your form in the Standard fields tab appears as a token option
* Custom fields, person/organization fields, and employment fields are all available
* Tokens are automatically generated from field labels (e.g., "Shift" becomes `%shift%`)
To insert a token, position your cursor in the filename pattern editor where you want the token, then click **Insert token** and select the token from the dropdown.
##### How tokens appear in the editor
Tokens display as **badges** in the editor, making them easy to identify and manage. For example, if you insert the First name and Last name tokens with an underscore between them, you'll see:
`[First name]_[Last name]`
Each badge shows the human-readable label for the token. You can type regular text between tokens to create separators like underscores, hyphens, or other characters.
##### Remove tokens
To remove a token from your pattern:
1. Hover over the token badge
2. Click the **x** button that appears on the right side of the badge
The token is removed and any surrounding text remains in place.
##### Orphaned tokens
If you remove a form field from the Standard fields tab that's being used in your PDF filename pattern, the system will alert you. You have three options:
1. **Remove token and field** - Automatically removes both the token from the filename pattern and the field from the form
2. **Edit filename** - Navigate to the filename pattern editor to manually adjust the pattern
3. **Cancel** - Keep the field on the form
If you save a form with orphaned tokens (tokens that reference fields no longer on the form), a confirmation dialog appears warning you that these tokens will appear as literal text in the filename. You can choose to **Go back** and fix the pattern, or **Save anyway** to proceed.
##### Example filename patterns
| Pattern | Example output |
| --------------------------------- | ------------------------------ |
| `%first-name%_%last-name%` | `Jane_Doe.pdf` |
| `%first-name%_%last-name%_%date%` | `Jane_Doe_2026-02-09.pdf` |
| `%last-name%_%shift%_%date%` | `Doe_Morning_2026-02-09.pdf` |
| `Intake_%first-name%_%last-name%` | `Intake_Jane_Doe.pdf` |
| `%employer%_%last-name%_%date%` | `ACME-Corp_Doe_2026-02-09.pdf` |
The `.pdf` extension is added automatically -- you don't need to include it in your pattern. Field values are sanitized (special characters replaced with hyphens) and truncated if too long to ensure valid filenames.
### Step 6: Save your work
Once you've configured the options, click **Save** to finish customizing your public form.
## Configuration Examples
### Basic Worker Interest Card
**Successful submission message**: "Thank you! An organizer will be in touch soon."
**Event step**: "Interest Card : Submitted"
**Final contact type**: "Prospective Member"
**Hide blank fields on PDF**: Yes
**Result**: Form submitters are marked with "Submitted" event status and "Prospective Member" contact type. PDFs are clean and concise.
### Volunteer Application
**Successful submission message**: "Thanks for applying! We'll review your application and contact you within one week."
**Event step**: "Volunteer Application : Applied"
**Final contact type**: "Volunteer Applicant"
**Hide blank fields on PDF**: Yes
**Result**: Form submitters see a custom confirmation message and are assigned "Volunteer Applicant" contact type.
### Simple Event RSVP
**Successful submission message**: "You're registered! We'll send you event details by email."
**Event step**: "March Meeting : Registered"
**Final contact type**: "Member"
**Hide blank fields on PDF**: Yes
**Result**: Clean, simple confirmation. Submitters are marked as registered for the March meeting.
### Grievance Form
**Successful submission message**: "Your grievance has been filed. A representative will contact you within 48 hours."
**Event step**: "Grievance : Filed"
**Final contact type**: "Member"
**Hide blank fields on PDF**: No (show complete form for records)
**Result**: Grievants receive clear confirmation. Complete form is preserved in PDF for legal records.
## Best Practices
**Confirmation messages**: Always set a message -- the default is generic. A specific, warm message builds trust.
**Event steps**: Use specific event steps for each form to track your funnel
**Contact types**: Use contact types to categorize your universe (prospective members vs. members vs. volunteers)
**PDF formatting**: Enable "hide blank fields" for most forms to keep PDFs concise
**Test thoroughly**: Submit test forms to ensure automations (event steps, contact types) work as expected
**Document your approach**: Keep notes on which event steps and contact types you use for which forms
## Troubleshooting
**Event step not applying**:
* Verify the event is marked as "active" in the Events page
* Check that you saved the form after selecting the event step
* Submit a test form and check the contact record's Events section
**Wrong contact type**:
* Check that you selected the correct contact type in the dropdown
* Remember: the contact is created first, then the contact type is applied
* Verify the contact type exists and is configured for the right entity type (person/organization)
**PDF formatting issues**:
* Toggle "hide blank fields" to see if it improves layout
* Review the PDF generation job logs if available
* Submit test forms with different data to see what affects layout
## Next Steps
Here are links to the other documentation pages for public forms:
* [Create a new public form](./create-public-form)
* [The "Standard fields" tab](./standard-fields-tab-in-public-form)
* [The "Timeline" tab](./timeline-tab)
* [The "Workplace" tab](./employment-tab)
* [The "Content and attachments" tab](./form-content-tab)
* [The "Confirmation email" tab](./email-tab)
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms)
# Public forms overview
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/public-forms-overview
Learn how public forms can help you collect data from non-Broadstripes users through customizable web forms
## What Are Public forms?
Public forms allow you to create customizable web forms to collect important data like survey responses, contact info or card signatures from anyone with access to the Web – people who aren't Broadstripes users. Forms are fully customizable and can be shared with others by simply sending out a Web link. Anyone who clicks your link will be able to open the form, fill it out, and submit it online. All responses are stored in Broadstripes — your organizers can see them and even be notified by new forms being submitted on their turf!
Public forms:
* Collect information from workers, volunteers, or other contacts
* Create new contact records in Broadstripes automatically
* Can match submissions to existing contacts to avoid duplicates
* Send confirmation emails to form submitters
* Track submission history and generate PDFs
* Support both worker (person) and organization forms
## Common Uses
* **Digital membership cards**: Allows workers to legally agree to be represented by the union
* **Worker sign-ups**: Collect contact information from workers interested in organizing
* **Event registrations or check-ins**: Register attendees for meetings, actions, or trainings
* **Volunteer applications**: Gather information from potential volunteers
* **Employer relationships**: Create employment records linking workers to their employers
* **Survey responses**: Collect structured information with custom fields
* **Organizer debrief forms**: Gather information from volunteer organizers after organizing conversations
## Key Features
**Flexible Field Selection**
Choose from dozens of standard fields and custom fields specific to your project. Fields can be marked as required or optional, and you control the order they appear on the form.
**Smart Duplicate Matching**
When enabled, Broadstripes automatically attempts to match form submissions with existing contacts based on a unique identifier, or name and contact information. This prevents duplicate records and enriches existing contact information.
**Split Address Fields**
Choose between a single address text box or separate fields for street, city, state, and postal code. Split address fields can improve data quality and user experience.
**Email Notifications**
Send automatic confirmation emails to form submitters (as well as a BCC if desired), with optional PDF attachments of their submission. For employment forms, you can also notify employers when their workers register.
**Employment Integration**
For worker forms, collect employer information and automatically create employment relationships. Support multiple selection methods including autocomplete, tiered dropdowns, or external system IDs.
**Timeline Tracking**
Can be set to create timeline entries when forms are submitted, tracking the date, time, organizer, assessment, and notes about the interaction.
**Event Tracking**
Link form submissions to specific event steps in your campaign, automatically updating the contact's event status.
**Custom Branding**
Upload your logo, customize header and introduction text, add legal agreement text, and even include custom CSS for advanced styling.
**Attachments**
Allow form submitters to upload files. Files are stored in the attachments tab of the contact record.
**Signature Field**
Allow form submitters to sign the form. The signature is retained on the PDF generated from the form submission.
## Accessing Public forms
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**)
2. Choose **Public forms**
The Public forms index page displays a table of all your public forms with:
* Form name (click to edit)
* actions dropdown menu (edit, duplicate, delete)
* Type (Person or Organization)
* Public link URL with go to and copy buttons
* Enabled/disabled checkbox
* Amber warning icon next to the form name when a BCC recipient address is undeliverable (open the form and go to the Confirmation email tab to resolve)
* Submissions count
* Created by
## Managing Existing Forms
From the Public forms index page, you can:
* **Edit**: Click the form name or use the actions menu (or ellipsis icon in the Name column)
* **Duplicate**: Create a copy using the actions menu (Click the ellipsis icon in the Name column)
* **Delete**: Remove unused forms via the actions menu (Click the ellipsis icon in the Name column)
* **Copy URL**: Click the copy icon next to the form link
* **Go to form**: Click the go to icon next to the form link
* **Enable/Disable**: Toggle the checkbox in the Enabled column
## What Happens When Someone Submits a Form?
1. **Validation**: Broadstripes checks that all required fields are filled
2. **Confirmation page**: Shows a success message to the submitter
3. **Duplicate matching**: If enabled, searches for existing contacts
4. **Record creation or update**: Creates a new contact, or updates the matched contact in place. Matched records keep their existing Broadstripes ID, timeline history, and references; addresses, phone numbers, emails, and custom field values are deduplicated against the existing record so submissions add information without overwriting it.
5. **Employment**: Creates employment relationships if configured
6. **Timeline**: Adds timeline entry if configured
7. **Events**: Updates event steps if configured
8. **PDF generation**: Creates and stores a PDF of the submission
9. **Emails**: Sends confirmation emails if configured
## Next Steps - Create
Since public forms can collect a wide range of information, the interface for creating them has several parts. Therefore, we've split the documentation into multiple articles. Together, these articles will guide you through customizing a basic form, collecting different types of data, and viewing the responses you receive. Here's a roadmap to working with public forms:
* [First step: create a new public form](./create-public-form)
* [The "Standard fields" tab](./standard-fields-tab-in-public-form/)
* [The "Timeline" tab](./timeline-tab/)
* [The "Workplace" tab](./employment-tab/)
* [The "Content and attachments" tab](./form-content-tab/)
* [The "Confirmation email" tab](./email-tab/)
* [The "After submission" tab](./other-options-tab/)
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms/)
To get the full picture of what public forms have to offer, new
users should plan to take a look at each article.
# Standard fields tab
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/standard-fields-tab-in-public-form
Learn how to configure basic data fields for your public forms using the Standard fields tab
## Choosing the basic data fields for your form
It's possible to capture many different types of Broadstripes data using public forms. The **Standard fields** tab of the public form editor allows you to indicate which of your project's most common data items you want on your form.
By default, the **Standard fields** tab is open and visible when you first create a public form and each time you open it for editing after that. Let's look at what it offers.
## Understanding the Standard Fields Interface
The Standard fields tab has two panels:
**Left Panel - Available Fields**: Shows all fields you can add to your form, organized by category
**Right Panel - Selected Fields**: Shows fields you've added, in the order they'll appear on the form
## Step 1: Match existing records?
Record matching is controlled by the **Attempt to match existing contacts** toggle. It is not on the Standard fields tab itself: it sits in the upper panel above the tabs, between the public-access card and the **Form status** strip, so it applies no matter which tab you're on.
When enabled (recommended for most forms):
* Broadstripes searches for existing contacts with matching email and/or phone
* If found, updates the existing contact in place instead of creating a duplicate
* If not found, creates a new contact
* The name fields and at least one of the two contact info types must match for a record match to be found
* Name-matching is done using "fuzzy logic;" for example, "Thomas" will match "Tom" and "Tommy"
**How matched records are updated**
When Broadstripes finds a match, the matched contact is updated directly. The contact's existing Broadstripes ID, timeline history, and any references from other parts of the app (search results, reports, leadership relationships, etc.) are preserved.
* **Addresses, phone numbers, and emails** in the submission are deduplicated against the existing record. New values are added; values that already exist are not duplicated.
* **Custom field values** that already exist on the record are deduplicated against the submission. Multi-value fields gain new values from the submission; existing values are preserved.
* **Single-value fields** (for example, an assessment, a date custom field, or general notes) are handled according to the **Keep existing values when a field is left blank** setting (see below). With the default setting on, a blank field keeps the existing value; when the form submits a new value, that value is written in.
When disabled:
* Always creates a new contact
* May result in duplicates if someone submits multiple times
* Useful for event registrations where you want each submission tracked separately
## Blank submissions
The **Standard fields** tab opens with the **Form fields** heading, followed by a **Blank submissions** section. It contains a single checkbox and an info icon that explain how empty fields affect an existing contact's data.
### Keep existing values when a field is left blank
This setting controls what happens when a form submission matches an existing contact and the submitter leaves a field empty. The checkbox is **checked by default**.
Click the icon next to the checkbox to open a popover that lists exactly which fields this setting governs and which are always preserved regardless of the setting.
| State | What a blank field does to the matched contact |
| ----------------- | ---------------------------------------------------------- |
| Checked (default) | Keeps the existing value on the contact's record unchanged |
| Unchecked | Overwrites or removes the existing value |
**Fields this setting controls:**
* Standard text fields -- nickname, notes, and other single-line fields
* Custom fields -- text boxes, dropdowns, and multi-selects
* Checkboxes -- an unchecked box will not clear an existing "Yes"
* Event steps -- leaving a step unchecked will not remove it from the contact
* Radio buttons -- fields that appear as a radio button group will not overwrite the existing value when no option is chosen; this applies to single-choice events and to dropdown fields with fewer than 4 options, which render as radio buttons on public forms
**Fields that are always kept regardless of this setting:**
* Multi-line (paragraph) custom fields -- new text is appended, never replaced
* Phone numbers, emails, and mailing addresses
This setting only affects matched contacts. For new contacts (no match found), blank fields result in no value being stored for that field.
## Step 2: Choose the basic data fields
Next, you can **select any fields** you want to appear on the public form by checking the box next to the field name in the left panel.
The fields are organized into categories:
### Basic Fields Category
These fields capture fundamental information about the contact.
#### For Person Forms
**First name**
* Worker's first (given) name
* Text input field
* Usually marked as required
**Last name**
* Worker's last (family) name
* Text input field
* Usually marked as required
**Middle name**
* Worker's middle name or initial
* Text input field
**Nickname**
* Preferred name or alias
* Text input field
**Suffix**
* Name suffix like Jr., Sr., III
* Text input field
**General notes**
* Free-form notes about the person
* Large text area
#### For Organization Forms
**Name**
* Organization's full name
* Text input field
* Usually marked as required
**Nickname**
* Abbreviated or informal name
* Text input field
**General notes**
* Free-form notes about the organization
* Large text area
### Contact Info Category
These fields collect contact information like phone numbers, email addresses, and physical addresses.
#### For Person Forms
**Cell phone**
* Mobile/cellular phone number
* Telephone input field
* Includes "Preferred phone" checkbox
**Cell phone opt in**
* Permission to send text messages
* Checkbox (checked by default)
* Text: "Opt in to receiving texts to this phone number"
**Personal email**
* Primary email address
* Email input field (validates email format)
* Most commonly used email field
**Personal email opt in**
* Permission to send emails
* Checkbox (checked by default)
* Text: "Opt in to receiving email to this email address"
**Home address**
* Residential mailing address
* Can display as single textarea OR split fields (see Contact Info Options below)
**Home phone**
* Landline/home telephone number
* Telephone input field
* Includes "Preferred phone" checkbox
**Business email**
* Work email address
* Email input field
* Includes confirmation option if enabled
**Business email opt in**
* Permission to send emails to work address
* Checkbox (checked by default)
#### For Organization Forms
**Business address**
* Organization's physical address
* Can display as single textarea OR split fields (see Contact Info Options below)
**Business cell phone**
* Organization's mobile phone
* Telephone input field
* Includes "Preferred phone" checkbox
**Business cell phone opt in**
* Permission to send texts
* Checkbox (checked by default)
**Business email**
* Organization's email address
* Email input field
**Business email opt in**
* Permission to send emails
* Checkbox (checked by default)
**Business phone**
* Organization's main phone line
* Telephone input field
* Includes "Preferred phone" checkbox
### Events Category
If your campaign has active events configured, they appear in this category. Each event becomes a field on the form.
**Single-choice events**:
* Display as radio buttons (user can select only one option)
* Example: "Which shift would you like?" with options for morning/afternoon/evening
**Multi-choice events**:
* Display as checkboxes (user can select multiple options)
* Example: "Which trainings are you interested in?" with multiple training options
To add an event to your form:
1. Check the box next to the event name
2. The event and all its steps will appear on the public form
3. When submitted, the contact's event status is updated automatically
### Custom Fields Category
Custom fields you've created for your campaign appear here. Only certain custom field types can be used in public forms:
**Supported custom field types**:
* **Text field**: Single-line text input (can be configured as Text, Number, or Date)
* **Text area**: Multi-line text input
* **Checkbox**: Yes/no checkbox
* **Select (dropdown)**: Choose one option from a list
* **Multiselect**: Choose multiple options from a list
* **Sortable list**: Drag-and-drop ranking of options
Custom fields display with their name or their "Long display name" (if configured) and behave according to their type.
The "Time of day" custom field type is NOT available for public forms and won't appear in this list. Custom fields marked "Editable by admins only" are also excluded from public forms.
### Unique IDs Category
External system identifiers configured for your campaign appear here.
**For Organization Forms**:
* **Broadstripes ID**: The unique identifier generated by Broadstripes
* Plus any external system IDs you've configured
**For Person Forms**:
* External system IDs only
These fields allow submitters to provide identifiers from other systems you use (payroll IDs, member numbers, etc.).
### Employment Settings Category
These fields are NOT directly visible in this section. They're configured in the **Workplace tab** (person forms only) but appear here for reference. See the [Workplace tab](./employment-tab) guide for details.
### Timeline Settings Category
These fields are NOT directly visible in this section. They're configured in the **Timeline tab** but appear here for reference. See the [Timeline Tab](./timeline-tab.md) guide for details.
## Step 3: Configure Contact Info Options
Below the Contact Info fields, you'll see **Contact info options** with three important checkboxes:
### Confirm email addresses
When any type of **email** is selected, you have the option of having recipients enter their email twice for accuracy by checking the **"Confirm email addresses"** checkbox.
When enabled:
* A second input box appears below each email field
* The submitter must enter the email address twice
* Form validation checks that both entries match
* Reduces email typos but may frustrate users
When disabled:
* Single email input field
* Faster for users but higher risk of typos
**Recommendation**: Enable for critical campaigns where email accuracy is essential (NLRB elections, card signing, certification votes). Disable for general sign-ups where you can follow up if email bounces.
### Split the address into separate fields
When enabled:
* Address displays as four separate fields:
* Street address and unit
* City
* State
* Postal code
* All four fields are required if the address field is marked required
When disabled:
* Address displays as a single large text box
* User types the complete address in free-form
**Recommendation**: Enable split fields for most forms. This improves data quality and makes it easier for users on mobile devices. Disable only if your users need to enter addresses in non-standard formats.
### Make the submitted address the new primary
This option controls what happens when matching is enabled and the form submission matches an existing contact who already has a primary address.
When enabled (default):
* The address submitted with the form becomes the new primary address
* The existing primary address remains but is demoted to non-primary
* Useful when you want the most recent address to be primary
When disabled:
* The existing primary address stays primary
* The submitted address is added as a non-primary address
* Useful when the form address is temporary (like a campaign office) or less reliable than the existing data
This only affects MATCHED contacts. For new contacts, the submitted address always becomes primary regardless of this setting.
## Step 4: Set the order of the fields
Whenever a field is checked, it will show up at the bottom of the **Selected fields** panel on the right side of the page. Once fields are in the **Selected fields** panel, you can drag and drop them to **reorder** their appearance on the form.
To reorder fields:
1. In the "Selected fields" panel (right side), click and hold a field's drag handle ()
2. Drop it in the desired position
3. Fields appear on the public form in this exact order, top to bottom
The panel's **Used for matching?** column shows a checkmark next to fields that record matching uses to find existing contacts (see Step 1 above).
## Step 5: Require specific fields
Check the **"Required?"** checkbox to indicate which fields will be required to complete a submission. If a user leaves a required field blank, they will receive a warning and will be prevented from submitting the form until the required field is completed.
To make a field required:
1. Find the field in the "Selected fields" panel (right side)
2. Check the **Required?** checkbox next to the field
3. Required fields must be filled out before the form can be submitted
4. Required fields display with an asterisk (\*) on the public form
Organizers often find that required fields prevent workers who don't know or don't want to share certain information from submitting forms. We often hear that, in the end, it's not worth it to require fields because you lose data you might otherwise receive. It's your choice — consider carefully.
## Step 6: Save your work
When you've selected all of the fields you want, click **Save.** This will close the form editor. To continue customizing your public form, return to the **Public forms** page, click the **actions menu** (⋯) next to your form's name, and select **Edit**.
**NOTE:** Instead of clicking **Save**, you can simply move on to other tabs to make additional changes to the form. Clicking **Save** will preserve the changes from all tabs at once. Be careful to do so at least once before you stop editing the form or allow your Broadstripes session to time out.
## Best Practices for Field Selection
**Keep forms short**: Only ask for information you truly need. Long forms reduce completion rates.
**Mark truly required fields**: Every required field increases abandonment risk. Only mark fields as required if you absolutely need the information.
**Use logical order**: Group related fields together (name fields together, contact info together, etc.).
**Test your form**: Fill it out yourself on both desktop and mobile before sharing widely.
## Next Steps
The following articles discuss the functional details of each tab on the public form editor:
**Configure what information to collect:**
* [The "Timeline" tab](./timeline-tab/) - Create timeline entries for organizing interactions
* [The "Workplace" tab](./employment-tab/) - Collect employer/workplace information
**Customize appearance and communications:**
* [The "Content and attachments" tab](./form-content-tab/) - Add logo, header text, introduction, legal agreement, signature field, and file attachments
* [The "Confirmation email" tab](./email-tab/) - Set up confirmation emails with optional PDF attachments
**Configure after-submission options:**
* [The "After submission" tab](./other-options-tab/) - Set the confirmation message, event steps, contact types, and PDF settings
**Manage and share your form:**
* [Viewing and downloading public forms](./viewing-and-downloading-public-forms/) - Access the public URL, test the form, and track submissions
# Timeline tab
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/timeline-tab
Configure your public form to create timeline items for organizing events and interactions
# Timeline Tab
The Timeline tab allows you to automatically create a timeline entry when someone submits your public form. This creates a record of the interaction in the contact's timeline history.
## What is a Timeline Entry?
Timeline entries (also called timeline items) record interactions with contacts. They include:
* Date and time of occurrence
* Type of interaction (phone call, door knock, text, etc.)
* Who made the contact (organizer name)
* Assessment (coded value indicating level of support)
* Notes about the interaction
## Overview
At the top of the Timeline tab, you'll see the **Timeline entry** card ("Create a timeline entry for the person this form creates or matches").
Turn on the card's toggle to enable timeline creation. The rest of the tab's options stay grayed out until this toggle is on. When enabled:
* A timeline entry is created each time the form is submitted
* The entry is linked to the new or matched contact
* The entry appears in the contact's timeline history in Broadstripes
When unchecked, no timeline entry is created (though the form submission itself is still tracked).
**When to enable timeline creation:**
* If the form represents a real organizing contact (door knock transcription, event sign-up, interest card)
* When you want to track form submissions as organizing interactions
* For debrief forms that organizers fill out after conversations
**When to skip timeline creation:**
* If the form is just updating contact information without an organizing interaction
* For simple data collection forms where the interaction isn't meaningful
## Timeline Type
**What type of timeline entry?** dropdown
Select the journal entry type that best represents this interaction. Common options include:
* Phone call
* House Visit
* One-on-one
* Group meeting
The list shows all timeline types configured for your campaign. Your administrator can create custom timeline types specific to your organizing work.
Create a specific timeline type called "Online Form Submission" or "Public Form - \[Form Name]" to easily identify and report on these interactions later.
## Timeline Fields
Below the timeline type, you'll see a table with two columns:
* **Timeline field**: The fields you can add to your form
* **Custom label on form**: The label that will appear to form submitters
Each field has:
* A checkbox to include it on the form
* A text input for customizing the label
### Date of Occurrence
**Default label**: "Occurred on"
The date when the interaction happened. Displays as a calendar date picker with a "today" button.
**When to include**:
* Event registrations (to capture event date)
* Incident reports (to capture when something happened)
* Sign-ups for future actions (to record the action date)
**Custom label examples**:
* "Event date"
* "Date of incident"
* "Action date"
* "Training date"
### Time of Day
**Default label**: "Occurred at"
The specific time when the interaction happened. Displays as a time picker with a "now" button.
**When to include**:
* Event registrations with specific start times
* Shift sign-ups
* Meeting registrations
**When to skip**:
* Most general sign-up forms (exact time is not relevant)
**Custom label examples**:
* "Event start time"
* "Shift time"
### Contacted By
**Default label**: "Contacted by"
A phone number or email address field that identifies who made the contact. Broadstripes will try to match this contact information (cell phone number or email) to an existing person in the app to find the organizer's name.
You should relabel this field with a meaningful custom label, like **"Organizer Phone"** or **"Organizer Email"** to make it clear that the form submitter should enter the organizer's phone number or email address, NOT their name.
**When to include**:
* Forms distributed by specific organizers (so they get credit for the contact)
* Events where you need to track which organizer recruited someone
* Paper forms transcribed by organizers
**When to skip**:
* Self-service online forms where no specific organizer is involved
* Anonymous forms
**Custom label examples**:
* "Organizer Phone"
* "Phone of Contacting Person"
* "Organizer Email"
* "Your Phone or Email"
### Assessment (Code)
**Default label**: Your campaign's code/assessment label (e.g., "Code", "Assessment", "Level")
The coded assessment value indicating the level of support or engagement. Displays as radio buttons with your campaign's configured codes (typically 0-5 or 1-5).
**When to include**:
* Initial contact forms where organizers assess support level
* Follow-up forms to track changes in support
* Forms where you want the submitter to self-assess their level of interest
**When to skip**:
* Forms where assessment is not relevant
* Self-service forms where users can't meaningfully self-assess
**Custom label examples**:
* "Interest level"
* "Support level"
* "How likely are you to vote yes?"
* "Commitment level"
The assessment scale in forms never goes to 100. Most campaigns use a 0-5 scale, sometimes extending to 7. The options displayed are based on your campaign's configured assessment codes.
### Description/Notes
**Default label**: "Description/Notes"
Free-form text area for additional notes about the interaction.
**When to include**:
* Almost all forms benefit from a notes field
* Allows capturing context and details
* Gives submitters a place to add information not captured by other fields
**When to skip**:
* Very simple forms with a single purpose
* Forms where you want to minimize length
**Custom label examples**:
* "Additional comments"
* "Questions or concerns"
* "Tell us more"
* "What issues are most important to you?"
* "How can we help?"
## Timeline Field Configuration Example
Here's a typical configuration for a worker interest card:
| Timeline field | Include? | Custom label on form |
| ------------------ | -------- | ------------------------------------------- |
| Date of occurrence | ☐ No | (not needed - submission date is enough) |
| Time of day | ☐ No | (not needed) |
| Contacted by | ☑ Yes | "Email of organizer who gave you this form" |
| Assessment | ☑ Yes | "How interested are you in learning more?" |
| Description/Notes | ☑ Yes | "Questions or concerns" |
## What the Timeline Entry Contains
When a form is submitted with timeline creation enabled, Broadstripes creates a timeline entry containing:
**Always included**:
* Submission timestamp (when the form was submitted)
* Timeline type (as selected in the dropdown)
* A note indicating it came from the public form
**Conditionally included** (based on which fields you enabled):
* Custom date of occurrence (if field was enabled and filled)
* Custom time of day (if field was enabled and filled)
* Contacted by value (if field was enabled and filled)
* Assessment/code value (if field was enabled and filled)
* Description/notes text (if field was enabled and filled)
## Timeline Entry Visibility
Timeline entries created by public forms:
* Appear in the contact's Timeline section in Broadstripes
* Are visible to all users with access to the contact
## Best Practices
**Use timeline creation for organizing interactions**: If the form represents a real organizing contact (door knock transcription, event sign-up, interest card), create a timeline entry.
**Skip timeline creation for data updates**: If the form is just updating contact information without an organizing interaction, you may not need a timeline entry.
**Use meaningful timeline types**: Create specific timeline types for your forms rather than reusing generic types. This makes reporting easier.
**Customize labels for your audience**: Use language your form submitters will understand. "What got you interested?" is clearer than "Contacted by reason" for most audiences.
**Test the timeline**: Submit a test form and check the contact's timeline in Broadstripes to ensure it looks correct.
## Common Scenarios
### Worker Interest Card
* ☑ Create timeline entry
* Timeline type: "Worker Interest Card"
* Include: Contacted by, Assessment, Notes
### Event Registration
* ☑ Create timeline entry
* Timeline type: "Event Registration"
* Include: Date of occurrence (event date), Notes
* Skip: Time, Contacted by, Assessment (not relevant for event RSVPs)
### General Contact Form
* ☐ Skip timeline entry
* (Or create minimal entry with just notes field)
### Shop Steward Nomination Form
* ☑ Create timeline entry
* Timeline type: "Shop Steward Nomination"
* Include: Notes (for nomination details)
* Skip: Date, Time, Contacted by, Assessment
## Next Steps
You can **save** or move on to the next tab to finish customizing your public form.
* [The "Workplace" tab](./employment-tab) - Configure employment relationships (person forms only)
* [The "Content and attachments" tab](./form-content-tab) - Customize the form's appearance and enable file uploads
* [The "Confirmation email" tab](./email-tab) - Set up email notifications
* [The "Standard fields" tab](./standard-fields-tab-in-public-form) - Return to field selection
# Viewing and downloading public forms
Source: https://help.broadstripes.com/docs/admin-guides/public-forms/viewing-and-downloading-public-forms
Learn how to view, search for, and download submitted public forms from your Broadstripes project
# Overview
Once public forms have been submitted, you may view or download them for printing or other purposes. This guide shows you how to access submitted forms, search for specific submissions, and download PDFs of completed forms—either individually or in bulk.
## Viewing public forms
Follow these steps to view submitted public forms:
### Step 1: Navigate to Submitted public forms
Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then type "Submitted" in the **Search settings** box to filter the list.
### Step 2: Open the Submitted public forms page
Choose **Submitted public forms** from the filtered list.
### Step 3: Review the submitted forms list
This will take you to a list of all the contacts that were matched or created by a submitted form in your project.
The **Forms submitted** page provides key information about each submission, including:
* Submission contact type (Name of the public form)
* Date and time of submission
* IP address of the submitter
* Web browser used
* Matching results for existing records
### Step 4: Download individual form PDFs
Next to each contact, you'll see an icon you can click to download a copy of that contact's form.
**What's in the PDF**:
* All form fields and submitted values
* Form branding (logo, header)
* Signature image (if captured)
* Timestamp of submission
* Contact information
### Step 5: Delete form submissions (if needed)
At the end of each contact row, you'll find the option to **Delete** the form submission.
**Important**: Deleting a form submission will permanently remove both the form and the associated contact record from your Broadstripes project. This action cannot be undone, and the record cannot be retrieved after deletion.
## Searching for public forms
If you are looking for a specific public form, you can **search for attachments** with that form's name. The search will return all records that have a downloadable attachment with that name.
1. Go to the main Search page
2. Use the search bar to search for attachments with the form name
3. Review the results to find specific form submissions
**Alternative**: Search by contact type if you set a specific contact type for your form:
* type = "\[Your Form's Contact Type name]" e.g. `type = "Contract Worker"`
* This returns all contacts created by that specific form
## Downloading public forms
You may **download** the PDF(s) created by a public form submission one at a time or in bulk. Here's how:
### Download multiple forms in bulk
From the **search results** page, select one or more contacts with attached forms. If you are new to working with search results, this [Selecting (and deselecting) contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) article can show you how.
**Step 1: Select contacts in search results**
Use the checkboxes in the search results to select the contacts whose forms you want to download.
**Step 2: Generate attachments report**
Next, go the **Reports** dropdown menu and select **Attachments**.
**Step 3: Download the zip file**
Broadstripes will generate a **zip file** containing the requested forms.
This report will download all the attachments for each contact, not just the public form PDFs. If a contact has other attachments, those will be included in the zip file as well.
### Download a single form
To view a single form, you may simply go to the person's record and download it from the **Attachments** tab.
**Step 1: Open the contact record**
Search for and open the contact record in Broadstripes.
**Step 2: Navigate to Attachments tab**
Click on the **Attachments** tab in the contact record.
**Step 3: Download the form PDF**
Click on the file with the name of the public form to download.
**What's in the PDF**:
* All form fields and submitted values
* Form branding (logo, header)
* Signature image (if captured)
* Timestamp of submission
* Contact information
By following these steps, you can efficiently manage, view, and download your submitted public forms.
## Next Steps
Here are links to the other documentation pages for public forms:
* [Create a new public form](./create-public-form)
* [The "Standard fields" tab](./standard-fields-tab-in-public-form)
* [The "Timeline" tab](./timeline-tab)
* [The "Workplace" tab](./employment-tab)
* [The "Content and attachments" tab](./form-content-tab)
* [The "Confirmation email" tab](./email-tab)
* [The "After submission" tab](./other-options-tab)
# Create a project from the union portal
Source: https://help.broadstripes.com/docs/admin-guides/union-portal/create-a-project
Union admins can create new projects for their project group directly from the union portal dashboard.
Union admins can create a new project for their group without leaving the union portal. The new project is set up with your group's core organizing features enabled, and you choose its name, geocoder, and optional features as you create it.
## Open the New project dialog
On the **Projects** tab of the union portal dashboard, click the **New project...** button. It appears both above and below the projects table.
## Fill in the project details
The **New project** dialog collects everything Broadstripes needs to set up the project.
* **Name** -- the project's display name, up to 40 characters. A character counter appears as you approach the limit. The name must be different from every existing project's name; Broadstripes tells you if it conflicts.
* **Primary geocoder** -- which address geocoder the project uses: **US** (the default), **Canada**, or **None**.
* **Project Settings** -- optional features for the project, all off by default:
* **Data imports can create multiple employments**
* **Require two-factor authentication**
* **SMS messaging**
* **Email**
* **Call Center (phone-banking)**
* **Limited visibility**
* **Public forms**
Core organizing features -- labor organizing, employments, community organizing, and telecom opt-in/opt-out tracking -- are always enabled on new projects, so you only choose the optional ones here.
Click **Save** to create the project, or **Cancel** to close the dialog without creating anything.
## After the project is created
When the project is created, a confirmation toast appears, the dialog closes, and the new project shows up as a row in the projects table with its **Active** status. The **Your projects** count at the top of the dashboard updates to include it.
You stay on the union portal dashboard -- to open the new project, click the **actions menu** (⋯) next to its name and select **Go to project**, which opens it in a new browser tab.
Broadstripes generates the project's URL nickname automatically from your group name and the project name -- you don't need to choose one.
## Next steps
Once the project exists, see [Manage project members](/docs/admin-guides/union-portal/manage-project-members) to add organizers to it and set their roles and permissions.
# Manage project members from the union portal
Source: https://help.broadstripes.com/docs/admin-guides/union-portal/manage-project-members
Add members to a project, set their roles and permissions, and deactivate or reactivate memberships from the union portal.
Union admins control who belongs to each project in their group from the union portal. You can add existing group members or brand-new people to a project, choose their role and permissions as you add them, and deactivate or reactivate memberships at any time.
## The project actions menu
Each row in the projects table has an **actions menu** (⋯) next to the project name. It contains the member-management entry points:
* **Edit settings** -- opens the project's general settings dialog.
* **Manage members** -- opens a panel listing the project's current members, where you can deactivate or reactivate memberships.
* **Add members** -- opens the Add members page for the project.
* **Go to project** -- opens the project itself in a new browser tab.
## Add members to a project
Select **Add members** from a project's actions menu to open its Add members page.
Use the search box to find people. Results only show people who belong to at least one other project in your group and are not already members of this project. Each result shows the person's name, email, and how many of your group's projects they belong to.
### Set the role and permissions
Selecting a person opens the **Assign project membership role** dialog. Your selections apply only to this person's membership in this project.
* **Role** (required) -- **Admin** or **Basic user**.
* **Create a linked person for this user account** -- checked by default; creates a person record for the user so they can organize. Not available on read-only projects.
* **Permissions** -- once you pick a role, checkboxes appear for communications permissions (sending SMS, setting opt-in/opt-out, managing call center pools, sending bulk emails) and miscellaneous permissions (downloading files, merging contacts, and more). The available options vary by role -- for example, only admins can be given **Can manage members**, and only basic users need **Can manage public forms** or **Can perform data imports** granted explicitly.
Click **Save and add** to stage the person, or **Cancel** to close without adding them.
### Add someone who is new to Broadstripes
To invite a person who doesn't have a user account yet, type their name or email address in the search box and select **Create a new member named "..."**. A short setup wizard walks you through three steps:
1. **Create user account** -- first name, last name, and email address, plus an optional note for the invitation email.
2. **Assign membership role** -- the same role and permission choices described above.
3. **Finish** -- a review of what happens next.
The new person is staged in your selection list; their account isn't created until you save the whole list.
### Save your selections
Staged people appear as removable chips with their role badge, and an amber reminder reads **Pending. Click 'Add members' to save.** Nothing is saved until you click the **Add members** button, which shows a count of how many people you're adding.
When you save, Broadstripes adds the members, emails an activation link to anyone you invited as a new user, and returns you to the union portal dashboard with a confirmation toast.
If you leave the Add members page with people still staged, your selections are discarded. Broadstripes warns you before you leave.
## Deactivate or reactivate a membership
Removing someone from a project is done by **deactivating** their membership -- memberships are never deleted, so you can always reactivate them later.
Select **Manage members** from a project's actions menu to open the project members panel. It lists each member's name, email, last active date, membership status, and role.
The **Membership status** column holds a toggle for each member. Switch it off to deactivate the membership, or on to reactivate it. The change takes effect immediately -- there is no confirmation step -- and a toast confirms the update.
## View one person's memberships across projects
From the **Users** tab of the dashboard, hover over a person's **Membership status** cell and click the **View user memberships** icon (). You can also select a person from the union portal header search.
The dialog lists every project membership the person has in your group, with their role, status, last active date, and who invited them. From here you can:
* Toggle any single membership's **Status** to deactivate or reactivate it, just like in the project members panel.
* Click **Deactivate all memberships** to deactivate the person's memberships in every project at once -- useful when someone leaves your organization.
This dialog is for reviewing and deactivating only. To add the person to another project, use that project's **Add members** page.
# Search the union portal
Source: https://help.broadstripes.com/docs/admin-guides/union-portal/search-the-union-portal
Use the union portal header search to find projects and users, open settings, and filter the Projects and Users tables by name.
Union admins have a combined search bar at the top of the union portal header that searches both projects and users at the same time. Type a name to find a project or a person, select a result to open its settings or memberships directly, or use the "view matching" rows to switch tabs and pre-filter the table.
## Open the search
Click the search bar in the union portal header, or press **Cmd+K** on a Mac or **Ctrl+K** on Windows and Linux to focus it from the keyboard.
Typing begins after two characters. A brief pause after each keystroke keeps requests from stacking up as you type.
## Search results
Results appear in a dropdown below the search bar. The dropdown shows up to 20 projects and up to 20 users. Projects appear first, followed by users.
Each type of result row shows different information:
* **Project rows** -- a colored square badge showing the project's initials, the project name, and the project's current status (for example, Active or Organizing).
* **User rows** -- the user's avatar, their full name, email address, and either the number of projects in the portal they belong to, or a **Union admin** badge if they are a project group admin.
At the top of the dropdown, two pinned action rows may appear:
* **"view N users matching ..."** -- available when at least one user matches.
* **"view N projects matching ..."** -- available when at least one project matches.
Selecting one of these rows switches to the corresponding tab and pre-filters the table to show only rows that contain your search term.
## Select a result
**Selecting a project row** opens that project's general settings modal, where you can edit the project name and other settings without leaving the portal.
**Selecting a user row** opens a "Projects for \[Name]" modal showing all of the user's memberships in the portal -- the project name, role, status, last active date, invite date, and who invited them. From this modal you can toggle individual membership statuses or click **Deactivate all memberships** to remove the user's access across every project at once.
**Selecting a "view N matching..." row** switches to the Projects or Users tab and pre-filters that table to your search term. The filter runs on top of any column filters already in place in the table.
## Clear a table filter applied by search
When a "view N matching..." row has filtered a tab's table, a notice appears above the table showing the active term. Click **Clear** in that notice to remove the filter and show all rows again.
## Union admin indicator
Users who are project group admins (union admins) appear with a green **Union admin** badge in the search results instead of a project count. Because union admins have access to every project in the group regardless of direct membership, showing a count would understate their actual access level.
The same green badge appears in the **Role** column of any memberships table opened through the portal.
# Union portal overview
Source: https://help.broadstripes.com/docs/admin-guides/union-portal/union-portal-overview
The union portal gives project group admins a central place to view and manage all projects in a group, create new projects, and navigate between them.
The **union portal** is a dedicated workspace for project group admins (union admins). It shows a dashboard of all projects that belong to a project group and provides tools to [create new projects](/docs/admin-guides/union-portal/create-a-project), [manage project memberships](/docs/admin-guides/union-portal/manage-project-members), and configure group settings.
## Who can access the union portal
* **Project group admins (union admins)** can access the portal for the project groups they administer.
To open the union portal, open your user menu (the avatar disc in the top-right corner of the navigation bar) while inside a project that belongs to a project group. Select **Union portal** from the menu.
## Navigation
The union portal has its own navigation header across the top of the page.
### Logo
The Broadstripes logo on the left links back to the union portal home page. Clicking it returns you to the portal dashboard from any page within the union portal.
### Search bar
A search bar () in the navigation header lets you find projects and users within the group. The search bar focuses automatically when you open the portal, so you can start typing right away without clicking first.
Type at least two characters to see matching results. Selecting a project opens that project's general settings modal; selecting a user opens a "Projects for \[Name]" modal listing their memberships. You can also press **Command-K** (Mac) or **Ctrl-K** (Windows and Linux) at any time to return focus to the search bar from the keyboard.
Pressing **Escape** or clicking elsewhere moves focus away without clearing what you typed. Clicking the search bar again -- or pressing the keyboard shortcut -- re-runs your previous search automatically so results reload right where you left off.
### Project switcher
The **Projects** button () opens the project switcher, letting you navigate directly to any Broadstripes project you have access to without returning to the main app first. The switcher works the same way as in the main app -- you can search by name, sort alphabetically or by recency, and open projects in new tabs.
### User disc
The avatar disc in the top-right corner opens your account menu. On the union portal, the menu includes:
* **Help center** -- opens the Broadstripes help documentation in a new tab.
* **Log out** -- signs you out of Broadstripes.
The settings gear that appears in the main app navigation bar is not shown on the union portal. Settings pages are scoped to individual projects, so there are no settings to show when you are browsing the portal itself.
The color of your user disc reflects your permission level within the portal:
* **Green** -- union admin (project group admin)
* **Sky blue** -- basic member
## Portal dashboard
The union portal dashboard has two main tabs: **Projects** and **Users**.
### Projects tab
The Projects tab lists all projects in the group. For each project, you can open the project, manage its members, and -- if you have the appropriate permissions -- disable or make a project read-only.
Union admins can create a new project for the group from the Projects tab.
### Users tab
The Users tab lists all users who have membership in any project within the group. Union admins can view and manage memberships across projects from this tab.
# Send email
Source: https://help.broadstripes.com/docs/communications/bulk-actions-send-email
How to compose and send bulk email messages to contacts in Broadstripes, and track delivery status.
Broadstripes makes it easy to send a single email to multiple contacts at once. You can compose a rich HTML email or choose from a pre-built [email template](/docs/communications/creating-email-templates), personalize messages with dynamic [merge fields](/docs/communications/using-merge-fields), add attachments, and schedule delivery for later.
## Before you begin
* You need **permission to send bulk emails**. If you don't see the **Send email** option in the **Communications** menu, ask your admin to enable it.
* Contacts must have a valid email address that is [opted in](/docs/communications/email-messaging-opted-in-permissions) to receive email. Contacts without an opted-in email will be skipped.
* Your organization's email domain must be authenticated with the Broadstripes bulk email service. If you see a "Bulk email unavailable" message when you try to send, contact your Broadstripes administrator.
## Open the email drawer
1. Run a [search](/docs/getting-started/search-by-workplace) to find the contacts you want to email.
2. From the **Search Results** page, [select the contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) you want to email. You can select up to 10,000 contacts at a time.
3. Open the **Communications** dropdown menu and select **Send email**.
The **Send email** drawer opens from the right side of the screen. The header shows how many contacts are selected. You can minimize the drawer to a bottom bar at any time -- your draft is preserved while you continue working. Click the bar to restore the drawer, or click **Discard** in the bar to close the draft entirely.
## Compose your email
The email drawer has four sections — **Sender**, **Content**, **Attachments**, and **Recipient addresses** — followed by a **Schedule for later** toggle. The **Recipient addresses** section is covered in [Limiting recipients by address type](#limiting-recipients-by-address-type) below.
### Sender
* **From address** — Choose the email address that will appear as the sender. The dropdown includes your personal email and any project-level outgoing email addresses that have been set up by your admin.
* **Change sender name** — Check this box to override the sender display name for this message only.
* **Use different reply-to address** — Check this box to set a different email address for replies.
### Content
You have two options for composing your email content:
* **Choose a template** — Select a pre-built email template from the dropdown. Templates are created on the [Email Templates](/docs/communications/creating-email-templates) page and can include formatted content with merge fields already configured.
* **Compose it now** — Write a rich HTML email using a full-featured editor. This option gives you a **Subject** field and a **Message** editor with a formatting toolbar (bold, italic, font size, alignment, color, links, images, lists, tables, and more).
When composing with **Compose it now**, use the toolbar above the form to personalize each email:
* ** Merge field** — Opens a searchable picker to insert a dynamic merge field (such as "First name" or "Department") into the Subject or Message. A context label on the button shows which field the insertion will target based on where you last clicked. See [Using merge fields](/docs/communications/using-merge-fields) for details.
* **Emoji button** — Inserts an emoji at the last cursor position in the Subject or Message.
To preview how your email will look before sending, click **Preview**. The preview pane shows the rendered email with its subject, from address, recipient count, and your project's email footer. You can send directly from the preview pane.
### Attachments
Click **Add attachment** to attach files to your email. You can also drag and drop files onto the form or paste from your clipboard. The total size of all attachments must be 10 MB or less.
Supported file types include PDFs, common document and spreadsheet formats (Word, Excel, CSV), images (PNG, JPG, GIF), plain text and HTML files, and calendar invite files (.ics).
**What is an .ics file, and why attach one?**
An **.ics** file is a calendar invitation — a small text file in the standard iCalendar format that holds an event's title, date, time, location, and description. Every major calendar app (Google Calendar, Outlook, Apple Calendar) can read one.
When you attach an .ics file to an email, recipients can add your event to their own calendar in a click or two instead of copying the details by hand. That's useful for anything you need people to actually show up to:
* Membership meetings, contract-vote sessions, and ratification votes
* Rallies, pickets, and actions where turnout is the whole point
* Steward trainings, new-member orientations, and committee calls
* Deadlines worth a reminder, such as the last day to sign a petition or return a card
Because the event lands in the recipient's calendar, they also get whatever reminder alerts they've already set up — so your event resurfaces on its own, without another email from you.
**How to create one:** Broadstripes doesn't generate .ics files, so make the event in your own calendar app and export it. In Google Calendar, open the event and choose the option to download or export it; in Outlook and Apple Calendar, use **Save as** or **Export** and pick the iCalendar (.ics) format. Then attach the saved file here.
Attachments are available on email only — text messages can't carry an .ics file, so for texting, put the details in the message body instead.
### Schedule for later
By default, your email is sent immediately when you click **Send**. To schedule it for a later time, turn on the **Schedule for later** toggle at the bottom of the drawer ("Pick a time or a repeating schedule"). Two tabs appear:
* **One time** — Click any highlighted token in the schedule sentence to set the date, time, and time zone.
* **Recurring** — Set up a repeating schedule using the same sentence-token editor. This option is only available when all contacts in your current search are selected; otherwise the tab is greyed out and a tooltip explains why.
Once you set a schedule, the drawer's **Send** button changes to **Schedule**.
**How scheduling affects recipients:**
* **One-time scheduled emails** lock in the recipients at the time of scheduling. The contacts who match your search at that moment are the ones who will receive the email.
* **Recurring emails** re-run your search each time the email is sent. Make sure your search criteria will continue to return the correct set of recipients.
## Preview your email
When composing an email directly (not using a template), you can preview how the message will look before sending it.
Click **Preview** at the bottom of the compose panel. The preview pane shows:
* How many contacts will receive the email (and how many are excluded)
* The **From** address and **Subject** line
* A rendered view of your message body, including the unsubscribe footer
From the preview pane, click **Send** to send immediately, or click **Edit** to return to the compose form. All your settings -- sender, schedule, and recipient address filter -- are preserved when you go back to edit.
**Preview** is only available when you compose the email directly. If you selected a template, use the template editor's built-in preview instead.
## Send the email
1. Review your email content and settings.
2. Click **Send** (or **Schedule** if you set a scheduled time).
3. A confirmation dialog appears showing how many contacts will receive the email. If any contacts in your selection don't have a valid opted-in email address, the dialog shows how many will be excluded.
4. Click **OK** to confirm. Broadstripes queues the email for delivery and displays a confirmation message.
## Limiting recipients by address type
By default, Broadstripes emails every opted-in address a contact has. In the **Recipient addresses** section of the **Send email** drawer — between **Attachments** and the **Schedule for later** toggle — you can narrow a send to a single address type, for example sending only to **Personal** addresses and excluding **Business**, or vice versa. This is useful when:
* A campaign should only contact members at home, not at work
* Your project keeps separate consent records for personal vs. business addresses
* You want to avoid emailing employer-controlled inboxes for sensitive organizing communications
Choose one of the two options:
* **Send message to all opted-in addresses** — the default.
* **Send message only to** — then pick a type from the dropdown: **Personal**, **Business**, **Home**, **Other**, **Primary**, or **Non-primary**.
When you limit the send to one address type, contacts whose only opted-in email addresses fall outside that type are skipped during sending and counted in the **Not valid** column on the [Sent Email page](#view-sent-emails-and-delivery-stats), even if they are otherwise opted in.
This choice applies only to the message you are composing. It isn't saved as a project setting, and there is no administrator-managed list of eligible address types.
## View sent emails and delivery stats
After sending, you can track delivery status from the **Sent Email** page.
1. Navigate to the **Email** section by clicking the **Sent Email** tab in the left sidebar, or go to **Communications** in the navigation.
2. The **Sent Email** tab shows an interactive data grid with sortable, filterable columns.
The table includes these columns:
| Column | Description |
| -------------------------- | --------------------------------------------------- |
| **#** | Sequential message number |
| **From** | The user who sent the email |
| **Status** | Current state: Sent, Queued, Scheduled, or Canceled |
| **Sent or Scheduled Date** | When the email was sent or is scheduled to send |
| **Subject** | The email subject line |
| **Selected** | How many contacts were selected |
| **Not valid** | How many contacts didn't have a valid email |
| **Sent** | How many emails were actually sent |
| **Delivered** | How many were confirmed delivered |
| **Opens** | How many recipients opened the email |
| **Clicks** | How many recipients clicked a link |
| **Spam** | How many were marked as spam |
| **Failed** | How many failed to deliver |
| **Unsubscribed** | How many recipients unsubscribed |
Each count in the table is a clickable link that opens a search showing those specific contacts.
### View message details
Click the **view** link in the **Actions** column to open the message detail page. This page shows:
* **Status** — The current delivery state, with the option to cancel a scheduled message.
* **Sent on** — The date and time the email was sent.
* **From** — The user who sent the email.
* **Selected / Not valid / Sent to** — Counts of contacts at each stage, with links to search results for each group.
* **Delivery Stats** — Progress bars showing Delivered, Opens, Clicks, Spam, and Failed counts with percentages. These stats update automatically.
* **Subject and Body** — A preview of the email content.
## Emails in a contact's timeline
When you send an email to a contact, it appears as an entry in their timeline. The entry shows the email subject, who sent it, when it was sent, and a delivery status icon. Click the entry to open the full email in a new tab.
# Actions - Send text (send bulk SMS messages)
Source: https://help.broadstripes.com/docs/communications/bulk-actions-send-sms-text-message
## Send SMS texts to multiple workers
This action allows you to send individual text messages to a group of workers all at once. See the [Text messaging overview](/docs/communications/text-messaging) article and watch the text messaging with Broadstripes video to learn more about using Broadstripes to send (and receive) text messages.
If you don't see the **"Text"** option on your drop down menu, it means you haven't been granted permission to use the feature. Talk to your admin to get set up.
## Before you can send a text message
Two things need to happen before you start sending texts in Broadstripes:
1. You have to have **permission to send texts**, which an admin can give you.
2. You need a **virtual cell number**, which also must be provided by an admin. Broadstripes uses virtual numbers so that:
* organizers don’t have to give out their real cell numbers
* if an organizer moves on from a campaign, another team member can continue an ongoing text conversation in their place.
You can learn how to complete these prerequisites in the Text messaging overview article which also includes a step-by-step video.
To receive notifications when workers reply to your texts, you should also [add your own cell number to your Broadstripes user account](/docs/communications/set-a-sms-notification-number/). This is not required to send messages, but without it you will not receive reply notifications.
## Video: How to set up and use text messaging in Broadstripes
## Sending a text message to multiple workers at once
Broadstripes can only send a text to workers who have been marked “**Opted in**,” indicating that they’ve agreed to receive messages.
If you're not sure how to add a new cell phone number or update an existing number indicating it's been "opted in," take a look at the [Text messaging permissions - Opt in](/docs/communications/text-messaging-opted-in-permissions/) article.
In this example, we'll send a text message to every opted in worker at Basic Hotel asking them to try to build support in their respective departments. Here's how:
1. First, we'll run a search for people who work at **Basic Hotel**. (If you need help running a search, check out the [Search section](/docs/getting-started/search-by-workplace).)
2. From the **Search Results** page, we'll [select all the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/). At the time this article was written, you were allowed to send up to 10,000 messages at once. Check with your admin to find out if that's changed.
3. Under the **Communications** drop-down menu, we’ll choose “**Send text.**”
4. A **Send text** drawer slides in from the right side of the screen. If your project has any [SMS message templates](/docs/communications/sms-message-templates/), you will see a **Start from a saved template** dropdown at the top of the Message section. Select a template to pre-fill the message body, or skip it and compose from scratch.
5. **Compose a short text message** (160-characters or fewer is considered a standard SMS message). You can edit any text you loaded from a template freely before sending.
6. Broadstripes makes it easy to personalize the message with dynamic [merge fields](/docs/communications/using-merge-fields/) like “**First Name**” or “**Department**.” Click the ** Merge field** button and choose a field to insert it at the cursor position.
* You can also add emojis to your message by clicking the **emoji icon** inside the message field. This opens an emoji picker where you can browse and select emojis to insert into your text.
* You can attach an image (JPEG, PNG, or GIF, up to 600 KB) or a PDF (up to 5 MB) by clicking the **Attach a file** () button below the message. PDF attachments appear as a downloadable link to recipients.
7. In the **Delivery** section, you’ll see the **virtual phone** number you’re sending from. If you have more than one number assigned to you, you can choose which to use from the **drop-down menu**.
8. Click **Send,** and an individual message will go out to each person you’ve selected. Remember, text messages will only be sent to workers with cell phones that are **opted in**. (Workers in the selection who don’t have an opted in cell will be ignored.)
You can minimize the Send text drawer at any time by clicking the minus icon in the drawer header. The drawer collapses to a small bar at the bottom of the page so you can keep working -- your draft is preserved. Click the bar to expand the drawer again.
## Sending a text to a single worker
You can also send a text to just one worker. You can use the method above (selecting only their name from the search results), or you can use a shortcut from the **Quick view** dialog:
1. From the **Search Results** page, click the **Quick view icon** () next to the worker's name.
2. Click the **Quick actions** tab in the **Quick view** dialog, then click **Send SMS**.
3. Compose a short message (160 characters or fewer) and hit **Send**
## More
Now that you've learned how to send a text, you can learn about viewing replies to your texts and see a history of all past texts:
* [Receiving replies to your texts](/docs/communications/text-messaging#receiving-replies-to-your-texts)
* [See a history of sent texts](/docs/communications/text-messaging#see-a-history-of-sent-texts-in-broadstripes)
# Creating email templates
Source: https://help.broadstripes.com/docs/communications/creating-email-templates
## What Are Email Templates?
Email templates are pre-designed, reusable email messages that allow you to save time and maintain consistency when sending emails through Broadstripes. Instead of composing the same email repeatedly, you can create a template once and use it whenever needed.
**Benefits of using email templates:**
* Save time by reusing content for common communications
* Maintain consistent branding and messaging across your campaign
* Personalize emails with merge fields (like worker names and organizer information)
* Create professional, mobile-responsive email designs without HTML knowledge
* Easily update templates when your messaging needs to change
**Common use cases:**
* Welcome emails for new workers
* Event invitations and reminders
* Follow-up messages after organizing conversations
* Campaign updates and announcements
* Meeting reminders
## Accessing Email Templates
To view and manage your email templates:
1. Navigate to the **Email** page from the left navigation panel
2. Click on the **Templates** tab at the top of the page
The Templates index page displays a table of all existing templates with the following information:
* **#** - Template number (for easy reference)
* **Name** - The template's descriptive name
* **Subject** - The email subject line
* **Created/Updated** - When and by whom the template was created or last modified
Each row's **Name** cell has an ellipsis () button at its right edge. Click it to open a menu with **Edit**, **Duplicate**, and **Delete**.
## Creating an Email Template
### Step 1: Start a New Template
1. From the Templates page, click the **+ New\...** button in the upper left corner of the table
2. You'll be taken to the template editor
### Step 2: Enter Basic Information
1. In the **Template name** field, enter a descriptive name for your template (e.g., "Welcome Email" or "Meeting Reminder")
* This name is only for your reference and won't be visible to email recipients
* Choose a name that clearly describes the template's purpose
2. In the **Email subject** field, enter the subject line that will appear in recipients' inboxes
* You can include merge fields in the subject (see section below)
* Example: `Welcome to the campaign, %first-name%!`
### Step 3: Design Your Email
The email body is created using a drag-and-drop visual editor. The editor appears below the template name and subject fields.
**To add content to your email:**
1. On the right side of the editor, you'll see content blocks including:
* **Paragraph** - Text blocks with formatting options
* **Heading** - Large text for section titles
* **Image** - Photos or graphics
* **Button** - Call-to-action buttons with links
* **Divider** - Horizontal lines to separate sections
2. Drag a content block from the right panel into the email canvas on the left
3. Click on the block you added to edit its content:
* For text blocks: Type directly in the editable area
* For images: Upload an image from your computer
* For buttons: Enter button text and the URL it should link to
4. Use the formatting toolbar to customize:
* Font size and color
* Bold, italic, or underline
* Alignment (left, center, right)
* Background colors
* Embed links
**Tips for designing effective emails:**
* Keep your message focused and concise
* Use headings to organize longer emails
* Include a clear call-to-action (what you want recipients to do)
* Test how your email looks by previewing it before saving or send yourself a test email
### Step 4: Add Merge Fields (Personalization)
Merge fields allow you to personalize each email with recipient-specific information. When you send the email, Broadstripes automatically replaces these placeholders with actual data for each recipient.
**To insert a merge field:**
1. Click where you want to insert the field in your text
2. Click the **Merge Tags** menu button in the editor toolbar
3. Select the field you want from the dropdown menu
**Available merge fields:**
* **Name** - Full name of the recipient
* **First Name** - Recipient's first name
* **Nickname or First Name** - Uses nickname if available, otherwise first name
* **Title and Last Name** - Recipient's title (if available) and last name
* **Broadstripes ID** - Unique identifier for the recipient
* **Organizer Name** - Full name of the recipient's assigned organizer
* **Organizer First Name** - First name of assigned organizer
* **Department** - Recipient's department (if employment data exists)
* **Employer** - Recipient's employer organization
* **Sender Name** - Your full name (the person sending the email)
* **Sender First Name** - Your first name
* Custom fields specific to your project may also appear
**Example using merge fields:**
```
Subject: Hi %first-name%, let's talk about %employer%
Body:
Hi %first-name%,
My name is %sender-first-name% and I'm an organizer working with workers at %employer%.
I'd love to connect with you to discuss how we can improve conditions in %department%.
Can we set up a time to talk this week?
Thanks,
%sender-name%
```
### Step 5: Add Special Links (Optional)
The editor provides pre-configured special links for common use cases:
1. Click the link icon in a text block or button
2. Select **View as Web page link** from the special links menu
3. This creates a link that allows recipients to view the email in their web browser
### Step 6: Upload Images (Optional)
**To add an image to your email:**
1. Drag the **Image** content block into your email
2. Click on the image block to select it
3. Click **Upload image** to select an image from your computer
4. Supported formats: JPG, PNG, GIF
5. Maximum file size: 5 MB per image
**To reuse a previously uploaded image:**
1. Click on an image block
2. Select the **More images** menu then **Uploads**
3. Choose from images you've uploaded before
**Image best practices:**
* Use images that are already sized appropriately (avoid uploading very large files)
* Ensure images are relevant to your message
* Test how images appear on mobile devices. This can be done by clicking the preview and mobile buttons at the bottom of the editior.
### Step 7: Save Your Template
1. Click the **Save** button at the bottom of the page
2. You'll see a "Saved!" message confirming your template was created
3. Your template is now ready to use when sending emails
All fields (template name, subject, and body) are required. If you try to save without completing all fields, you'll see an error message indicating what needs to be filled in.
## Editing an Existing Template
To modify a template you've already created:
1. Navigate to the Templates index page
2. Find the template you want to edit in the table
3. Click the ellipsis () button in the template's **Name** cell, then choose **Edit**
4. Make your changes to the template name, subject, or email body
5. Click **Save** to update the template
**Important:** Changes to a template do not affect emails that have already been sent. The updated template will only be used for new emails sent after the changes are saved.
## Duplicating a Template
If you want to create a new template based on an existing one:
1. On the Templates index page, find the template you want to copy
2. Click the ellipsis () button in the template's **Name** cell, then choose **Duplicate**
3. A new template editor will open with the copied content
4. The template name will automatically be prefixed with "Copy of"
5. Modify the name, subject, and content as needed
6. Click **Save** to create the new template
This is useful when you want to create variations of similar emails without starting from scratch.
## Deleting a Template
To permanently remove a template:
1. From the Templates page, locate the template you want to delete
2. Click the ellipsis () button in the template's **Name** cell, then choose **Delete**
3. Click **OK** in the confirmation dialog to confirm the deletion
4. The template will be removed immediately
**Warning:** Deleting a template cannot be undone. However, emails that were previously sent using this template will not be affected.
## Using Templates When Sending Emails
Once you've created templates, you can use them when sending emails to workers:
**From the Search Page**
1. Search for and select the workers you want to email
2. Click the **Communications** menu at the top of the search results
3. Select **Send Email**
4. In the "Content" section, you'll see two options:
* **Choose a template** - Select from your existing templates
* **Compose it now** - Write a one-time email without using a template
5. Select **Choose a template** and pick your desired template from the dropdown menu
6. The template's subject and content will be used for your email
7. Complete the sender information and any other required fields
8. Click **Send** to deliver the email
**When using a template:**
* You cannot modify the subject or content during sending (you must edit the template itself if changes are needed)
* Merge fields will be automatically replaced with each recipient's information
* All formatting and images from the template will be preserved
## Understanding Merge Fields
Merge fields (also called merge tags) are placeholders that get replaced with actual data when emails are sent. They always appear in the format `%field-name%`.
**How Merge Fields Work**
1. **In the template editor:** You insert merge fields where you want personalized information
2. **When you send the email:** Broadstripes looks at each recipient's data
3. **In the delivered email:** Each recipient sees their own personalized information
You may add merge fields manually by typing them in, but they must be in the format `%field-name%`.
You can also add merge fields using the **Merge Tags** dropdown menu in the formatting toolbar in the editor.
For more info on merge fields, see the [Using merge Fields](/docs/communications/using-merge-fields) page.
## Best Practices for Email Templates
**Template Organization**
* **Use clear, descriptive names** - "New Hire Welcome" is better than "Template 1"
* **Create templates for common scenarios** - Identify emails you send frequently
* **Keep templates focused** - One template per purpose rather than trying to fit multiple uses into one
* **Review templates regularly** - Update outdated information or messaging
**Writing Effective Email Content**
* **Start with a personal greeting** - Use `%first-name%` or `%nickname-or-first-name%`
* **Get to the point quickly** - Recipients often skim emails, so lead with your main message
* **Include a clear call-to-action** - Tell recipients exactly what you want them to do
* **Keep paragraphs short** - Long blocks of text are hard to read on mobile devices
* **Use formatting strategically** - Bold important points, but don't overdo it
* **Proofread carefully** - Templates will be used multiple times, so errors multiply
**Subject Line Tips**
* **Be specific and descriptive** - "Action needed: Vote on contract proposal" is better than "Important message"
* **Use merge fields thoughtfully** - Personalized subjects can improve open rates
* **Keep it concise** - Aim for 50 characters or less for mobile visibility
* **Avoid spam triggers** - Don't use all caps or excessive exclamation points
**Design Considerations**
* **Mobile-first approach** - Most recipients will read on their phones
* **Use a single-column layout** - Easier to read on small screens
* **Make buttons large enough** - At least 44x44 pixels for easy tapping
* **Limit images** - Too many images can slow loading or be blocked
* **Test before using** - Send yourself a test email to check formatting
**Personalization Strategy**
* **Balance personalization with clarity** - Don't overuse merge fields to the point where text feels unnatural
* **Consider what data is available** - Merge fields only work if the data exists in worker records
* **Use organizer fields strategically** - Helps build the personal connection in organizing work
## Troubleshooting Common Issues
**Template won't save**
**Problem:** Clicking Save shows an error message.
**Solutions:**
* Ensure all required fields are filled in (template name, email subject, and email body)
* Check that the template name is unique (no other template has the same name)
* Verify you've added at least one content block to the email body
* If the error persists, try refreshing the page and recreating the template
***
**Merge fields not working**
**Problem:** Merge fields appear as `%field-name%` in sent emails instead of actual data.
**Solutions:**
* This typically means the recipient's record is missing that data
* Check a few recipient records to verify the data exists
* The issue may only affect some recipients, not all
***
**Images not displaying**
**Problem:** Images don't appear in the email editor or sent emails.
**Solutions:**
* Check that the image file is under 5 MB
* Verify the image format is JPG, PNG, or GIF
* Try uploading the image again
* Check your internet connection (images are uploaded to cloud storage)
* Some email clients block images by default - recipients may need to "show images"
***
**Template name error when saving**
**Problem:** Error says template name already exists.
**Solutions:**
* Another template in your campaign has the same name
* Choose a different, unique name
* Template names are case-insensitive, so "Welcome Email" and "welcome email" are considered duplicates
***
**Editor not loading**
**Problem:** The email editor doesn't appear or shows a blank screen.
**Solutions:**
* Refresh the page
* Clear your browser cache
* Try a different browser (Chrome, Firefox, or Safari recommended)
* Check that JavaScript is enabled in your browser
* Disable browser extensions that might interfere (ad blockers, privacy tools)
***
**Can't edit template content during email sending**
**Problem:** Want to modify the template's content when sending an email.
**Solution:**
* By design, templates cannot be modified during the sending process
* If you need to make changes:
* Cancel the email sending process
* Go back to the Templates page
* Edit the template and save your changes
* Return to sending the email
* Alternatively, choose "Compose it now" instead of using a template if you need a one-time custom message
***
**Template looks different on mobile**
**Problem:** Template formatting appears different on phones than on desktop.
**Solutions:**
* This is normal - the editor automatically makes templates mobile-responsive
* Test by sending yourself an email and viewing on your phone
* Use the editor's preview mode to see mobile layout
* Simplify complex layouts that don't translate well to mobile
* Avoid narrow columns or small text sizes
***
## Permission Requirements
To work with email templates, you need:
* **Mass Email feature enabled** for your project
* **Can send bulk emails** permission enabled on your project membership
# Email messaging permissions - opt in an email
Source: https://help.broadstripes.com/docs/communications/email-messaging-opted-in-permissions
# Email messaging permissions
## Opt in multiple workers at once to receive Broadstripes emails
This article only covers one step in the process of sending email messages with Broadstripes – how to mark workers' email addresses as **"Opted in."** Check out the [Email messaging article](/docs/communications/bulk-actions-send-email/) if you'd like to learn more about how to send bulk email messages using Broadstripes.
Before you can send Broadstripes emails to workers, they need to consent, or "opt in," to receive your email messages. This bulk action allows you to update multiple workers' permission settings at once, whether it is to mark them "Opted in" or "Opted out" or even "Unspecified" or "Unreachable."
In this example, we’ll show how to opt-in emails for a group of workers. Here’s how:
1. First, we’ll run a search for people whose email addresses we want to opt in. (If you need help running a search, check out the [Search articles](/docs/search/search-builder-build-an-advanced-search) article.)
2. From the **Search Results** page, we’ll [select all the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts).
3. With the contacts selected, we'll go to the **Communications** drop-down menu and choose Email messaging permissions.
4. In the **Update Email Messaging Permissions** panel, we'll select **Opted in** and the email messaging permissions reason. In this example, we'll select "Gave verbal instructions".
5. Then choose which emails will be opted in. For this example, we'll select the *primary personal emails*.
6. Click **Update** to save the changes.
# Verify your organization for texting
Source: https://help.broadstripes.com/docs/communications/getting-a-project-ready-for-texting
To get your project ready to send messages, your organization must be verified for SMS messaging. (Mobile carriers require this step to prevent spam.)
Text messaging is an effective communication channel for engaging with employees or project team members. To facilitate SMS messaging within your project, a verification process with our designated SMS provider is essential. Mobile carriers enforce this step to mitigate the risk of unsolicited messages or spam.
For your organization to pass this vetting procedure, a designated representative is required to submit detailed information about your organization to the Broadstripes support team. Moreover, it's imperative that your organization's official website hosts a privacy policy that aligns with the criteria set forth by the SMS provider. Key requirements for the privacy policy include:
* **Visibility and Accessibility**: Your organization's privacy policy should be prominently displayed and easy to access on its website. Ideally, a direct link to this policy should be included in the website's footer.
* **Disclosure on Information Sharing**: The policy must clearly outline how your organization handles the sharing of personal data (such as contact information) with external parties.
Below is a template designed to help you integrate these stipulations into your existing privacy policy or draft a new one for your website.
### Privacy Policy
\[Organization Name] will use personal information data collected from members to Opt-in data and consent for text messaging. This information will not be shared with any third parties except for messaging partners for the purpose of enabling and operating our text messaging program. The information collected from members will be used to communicate with members about important news and updates.
You may contact us with any questions at:
**\[Organization Name]**
\[Organization Address]
\[Additional Contact Info]
Feel free to customize this template to align with your organization's specific policies and practices.
# Making call center calls
Source: https://help.broadstripes.com/docs/communications/making-calls
This guide walks you through making calls using the Broadstripes call center. Whether you're calling for a phone bank, voter outreach, or member engagement campaign, you'll use the same interface and follow similar steps. The call center handles all the technical details—you focus on having great conversations with people.
### Starting a call session
**Step 1: Access the call pool link**
A project admin will provide a link that looks like:
`https://crm.broadstripes.com/call_center/start/4821`
The number at the end is the call pool's ID. Your admin may instead share a shortened version of the same link, which looks like `https://bs1.io/occ7f3k2`.
Click the link to begin.
**Step 2: Enter your information**
You'll see a form requesting:
* **Full name**: Enter your first and last name as you want it to appear to people you call
* Example: "Maria Garcia" not "M. Garcia" or "Maria G."
* This name will appear in call records and may be visible in scripts
* **Email** (optional but recommended)
* **Phone number** (optional): Your contact number
**Important**: Your information is saved in cookies, so you won't need to re-enter it next time you call from the same device.
**Step 3: Enter password (if required)**
Some pools are password-protected. Enter the password provided by your project admin.
**Step 4: Review instructions**
Read any special instructions provided for this calling campaign.
**Step 5: Start calling**
What you see at this point depends on the pool type the project admin set up.
**Random pools**: You see a simple welcome screen with a single **Start calling** button. The system picks who to call next — you don't choose. Click **Start calling** and the system assigns you the first person.
**List call pools**: You see the full list of people in the pool along with a session metrics dashboard at the top. Each person displays a **Status** badge showing whether they still need to be called (**Call**), need a follow-up (**Follow-up**), have already been reached (**Complete**), or are currently being called by someone else (**Locked**). By default, the list shows only people with **Call** and **Follow-up** statuses. Click the **Start** button next to the person you want to call.
### The calling interface
Once you start a call, you'll see:
**Header Section**:
* **Call #**: Your current call number (e.g., "Call #1", "Call #23")
* **Person's name**: Large, clear display
* **Phone numbers**: All available numbers with status toggle
* **Custom fields**: Fields marked by a project admin as "Show in call center"
* **Call history**: Past calls with this person
* **Assessment or code**: Current organizing strength (if enabled)
* **External system data**: External system IDs marked by a project admin as "Show in call center"
**Main Content Area**:
* **Script prompt**: The current conversation text
* **Variables populated**: Names, workplaces, etc. filled in based on person being called
**Navigation Panel**:
(Right side of screen on desktop; Bottom of screen on mobile)
* **Navigation buttons**: Options to progress through the script
* **Go back**: Return to previous script step
* **Skip this person**: Move to next call without completing
* **Call interrupted**: Handle dropped calls
* **End call session**: Stop calling
* **Custom buttons**: Any custom buttons added to the script (may be used for navigation or event step checkoffs)
### Viewing Call History
Click the **rotating clock icon** :
* **Date and time** of previous calls
* **Caller name**: Who made the call
* **Script used**: Which campaign
* **Outcome**: How the call ended
**Why This Helps**:
* Avoid asking questions they already answered
* Reference previous conversations ("Last time we talked, you mentioned...")
* Understand their engagement level
* Provide continuity across calls
### Following the Script Flow
The call center does not automatically dial a phone number for you. You will need to dial the phone number provided in the call center header yourself.
##### Reading Prompts
Prompts display with variables filled in. Read naturally:
**Script Shows**:
> "Hi Maria, this is John Smith calling from Local 123. According to our records, you work at ABC Manufacturing. Do you have a moment?"
**You Say** (naturally):
> "Hi Maria, this is John Smith calling from Local 123. I see you work at ABC Manufacturing - do you have a quick moment to chat?"
##### Clicking buttons
When the person responds, click the button that matches their answer:
**Person Says**: "Yes, I have a few minutes"
**You Click**: "Yes, I have time" button
**Person Says**: "I'm really busy right now"
**You Click**: "Not right now" button
The script automatically moves to the next node.
##### Filling in custom fields
When you reach a custom field on a page:
1. Read the prompt/question to the person
2. Listen to their response
3. Enter their answer in the field
4. Click the appropriate button to continue
**Example**:
* **Prompt**: "What's your biggest workplace concern?"
* **Person responds**: "The mandatory overtime is exhausting"
* **You type**: "Mandatory overtime causing exhaustion"
* **Click**: "Continue"
- Type while the person talks to save time
- Paraphrase if needed to keep it concise
- Use their words when possible for authenticity
##### Handling required fields
Fields marked REQUIRED must be filled before you can proceed:
* The button won't work until the field has content
* If the person refuses to answer, type "Declined to answer" or similar
### Managing phone numbers
All phone numbers for the person are displayed at the top:
* (203) 555-1234 (Home)
* (203) 555-5678 (Cell)
* (203) 555-9012 (Other)
#### Marking bad numbers
If a number doesn't work:
1. Click the **toggle** next to the number
2. It changes from ✓ (OK) to ✗ (BAD)
3. Changes save when you complete the call
**Why this matters**:
* Future callers won't waste time on bad numbers
* Data quality improves over time
**Common bad number scenarios**:
* "This number is not in service"
* "Wrong person answers"
* "Number constantly busy"
* "Voicemail says person doesn't live there"
### Sending SMS messages
If your script includes SMS capability:
**When to send**
The script will show a button like:
* "Send to (123) 555-1234 (opted-in)"
This appears when:
* The person has a cell phone number
* Your project has a SMS number provisioned
* The script includes an SMS message
**How to send**
1. Verbally confirm: "Can I text you this information?"
2. If they agree, click the **Send** button
3. The message is sent immediately
**SMS template example**:
> "Hi %first-name%! Union info meeting Thursday 6pm at Local 123 Hall, 100 Main St. Questions? Reply to this text."
* Messages are sent from a virtual SMS number provisioned in the project This means the people you call won't see your actual phone number.
* People can reply to texts
* Merge tokens (like %VoterFile-ID%) are automatically replaced
### Working with assessment/codes
If enabled in your project, you can view and update assessment/codes during calls (Assessments will vary based on your union and project).
**Assessment scale** (typical):
* **0**: Unassessed
* **1**: Strong Union supporter
* **2**: Union supporter
* **3**: Undecided
* **4**: Leaning Hostile
* **5**: Hostile
**How to update**:
1. Click the current assessment code
2. Select the new code from the dropdown
3. Change saves when you complete the call
### Viewing call history
Click the **rotating clock icon** :
* **Date and time** of previous calls
* **Caller name**: Who made the call
* **Script used**: Which campaign
* **Outcome**: How the call ended
**Why this helps**:
* Avoid asking questions they already answered
* Reference previous conversations ("Last time we talked, you mentioned...")
* Understand their engagement level
* Provide continuity across calls
### Handling common scenarios
**Wrong number**
1. Mark the phone number as bad
2. If other numbers are available, try another
3. If no working numbers, skip the person
**Person asks to be removed from calling list**
1. Follow the script's "Do not call" or "Remove from list" path
2. If no such path exists:
* Click **Skip**
* Make a note in a supplemental field if available
3. Report to project admin that this person requested removal
**Call gets disconnected**
1. Click **Call interrupted**
2. Choose:
* **Resume call** if attempts to reconnect to person are successful
* **End call** if attempts to reconnect to person are not successful. This will move you to the next person in the pool.
#### Technical issues
**Page freezes or won't advance**:
1. Click **Go back** in the navigation panel and try again
2. If that doesn't work, refresh the page (you'll lose progress on this call)
3. Report the issue to Broadstripes support
**Can't hear them / they can't hear you**:
* This is a phone issue, not an app issue
* Use your regular phone troubleshooting (check volume, connection, etc.)
### Completing a call
When you reach a `Call Complete` button in the script:
**Automatic data save**
1. Review all the data you collected
2. Verify custom fields are filled correctly
3. Check that bad phone numbers are marked
4. Assessment updates are noted
**Supplemental fields**
If the script includes supplemental fields, you'll see them at the bottom of every page of the call:
* "Any additional notes?"
* "Caller observations"
Fill these out if you have relevant information.
**Complete the call**
1. Click **Call complete**
2. All data is saved immediately
3. The person is marked as called in this pool
4. Timeline notes are created to log the call on the person's timeline
5. Custom fields are updated
##### What happens after the call is complete
**Random pools**:
* You're immediately shown the next person to call
* Click **Start calling** to continue
* Or click **End session** to stop
**List call pools**:
* You return to the list
* The person you just called updates to **Complete** or **Follow-up** depending on the call outcome
* Choose the next person to call
* Or click **End session**
### Ending your call session
When you're done calling:
1. Click **End session** in the navigation panel or in the list view.
2. You'll see a Thank You message.
3. Close the browser tab to leave the call center.
**Important**: Always end your session properly to ensure:
* Call locks are released
* Final data is saved
* Accurate time tracking
***
### Caller training tips
**Before the Phone Bank**:
1. **Review the Script**
* Walk through the script together
* Practice different paths
* Role-play common scenarios
2. **Set Expectations**
* How many calls are expected
* What outcomes are good
* How to handle difficult calls
3. **Technical Walkthrough**
* Show the interface
* Demonstrate navigation
* Practice marking bad numbers
* Test SMS sending (if applicable)
4. **Provide Talking Points**
* Key facts and figures
* Answers to common questions
* Campaign messaging
5. **Establish Support**
* Who to ask if stuck
* How to escalate issues
# Provisioning a virtual SMS number
Source: https://help.broadstripes.com/docs/communications/provisioning-a-virtual-sms-number
A project admin can create a virtual SMS number and assign it to a user so they can send text messages.
To send text messages in Broadstripes, a user needs a virtual SMS number to send from. A project admin can create a number and assign it to any user who has permission to send texts.
Broadstripes uses virtual numbers so that organizers don't have to give out their real cell numbers, and so another team member can take over an ongoing conversation if an organizer moves on from the campaign.
## Provision a number
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **SMS numbers**. You can start typing to filter the list.
2. On the **SMS numbers** page, click **New number...** in the table toolbar.
3. In the **Add a new SMS number** dialog, fill in the fields:
* **Number owner** — choose the project member who will own the number and send from it. (If you don't already have a number, you're selected by default.)
* **Area code** — enter a three-digit area code that makes sense for your project and your message recipients. Broadstripes looks up available numbers as soon as you enter a valid area code.
* **Available numbers** — once the dropdown populates, choose the number you want.
4. Click **Provision**.
5. A **Please wait** dialog confirms that your number is being provisioned. This can take up to 24 hours, though it usually finishes in less than an hour. Click **OK** to close it.
If a person in the project has your personal cell number in their contact info, send them a test text once provisioning finishes to confirm the new number is working.
Once provisioning completes, the number appears in the **Active numbers** table and its owner can use it to send texts.
## Release a number
The **SMS numbers** page lists every number in your project in an interactive data grid with sortable, filterable columns — the **Number**, its **Location**, the **Creator** and **Owner**, and the **Provisioned date**.
To give up a number you no longer need, click **Deactivate** in its row and confirm. The number is released back to the carrier and moves to a **Deactivated numbers** table at the bottom of the page.
Releasing a number is permanent. It returns the number to the carrier, so you can't count on getting that specific number back, and you can no longer send or receive texts from it. Texts you already sent from the number stay in your [Sent texts](/docs/communications/text-messaging#see-a-history-of-sent-texts-in-broadstripes) history.
# Set an SMS notification number
Source: https://help.broadstripes.com/docs/communications/set-a-sms-notification-number
Register your cell number so Broadstripes can notify you when a worker replies to a text you sent.
When you use SMS messaging, Broadstripes notifies you when a worker or member replies to one of your texts. The app needs to know where to reach you, so you register a cell phone number to receive those notifications.
This article shows you how to set up a notification number.
1. Log in to Broadstripes. In the top-right navigation bar, click your **user disc** (the circle showing your initials or photo) to open the user menu, then select **User settings**.
2. On your user settings page, find the **SMS notification settings** section. Enter your cell number in the **Phone number for SMS notifications** field, then click **Confirm and save**.
3. Broadstripes sends a text to that number to confirm it. Reply to the message with the word **YES**.
After you reply, the page updates and the button changes to **Confirmed**.
The **SMS notification settings** section appears only when your organization is set up for texting. If you don't see it, ask your project admin whether your organization has been [verified for SMS messaging](/docs/communications/getting-a-project-ready-for-texting).
Now that your SMS notification number is confirmed, an admin can [provision a virtual number](/docs/communications/provisioning-a-virtual-sms-number) for you so you can start texting.
# SMS message templates
Source: https://help.broadstripes.com/docs/communications/sms-message-templates
Save reusable text messages that your team can drop into bulk SMS sends instead of retyping the same messages each time.
## What are SMS message templates?
SMS message templates let your team save reusable text messages so that anyone sending bulk texts can start from a consistent, on-brand draft instead of composing from scratch each time. Templates support [merge fields](/docs/communications/using-merge-fields/) and emojis, and merge fields are replaced with each recipient's real data when the message is sent.
## Who can manage templates?
* **Creating, editing, and deleting templates** requires a **project admin** role and the **Provision and send SMS** feature enabled on your project.
* **Using templates** when composing a bulk text is available to any user who has permission to send bulk SMS messages.
## Accessing SMS templates
1. Navigate to **Text messages** from the project sidebar menu. This opens the **Text Messages** page.
2. Click the **Templates** tab at the top of the page. (This tab only appears if you have permission to manage SMS templates.)
The Templates page shows a table of all saved templates with the following columns:
* **#** - Template number (for easy reference)
* **Name** - The template's descriptive name
* **Body** - A preview of the template text
* **Created/Updated** - When and by whom the template was created or last modified
## Creating a template
1. From the **Templates** page, click the **+ New\...** button in the upper left of the table.
2. In the dialog that opens, enter a **Name** for the template. Names must be unique within your project.
3. Enter the **Body** -- the text of your message.
4. Optionally, use the ** Merge field** button to insert personalization placeholders like `%first-name%` or `%employer%`. When the template is used to send a text, Broadstripes replaces each placeholder with the recipient's real data.
5. Use the emoji button to add emojis to the body if needed.
6. The character counter below the body shows how many characters you have used out of the limit. A standard SMS message is 160 characters; messages that exceed this may be split into multiple segments by the carrier.
7. Click **Save**.
Template names must be unique within the project. If you try to save a template with a name that already exists, you will see an error asking you to choose a different name.
## Editing a template
1. On the **Templates** page, click the actions menu on the template's row.
2. Select **Edit** ().
3. Make your changes in the dialog and click **Save**.
Changes to a template do not affect messages that have already been sent. The updated template will only appear when composing new messages.
## Duplicating a template
To create a new template based on an existing one:
1. Click the actions menu on the template row.
2. Select **Duplicate** ().
3. A new dialog opens pre-filled with the original body and a name prefixed with "Copy of".
4. Edit the name and body as needed, then click **Save**.
## Deleting a template
1. Click the actions menu on the template row.
2. Select **Delete** ().
3. Confirm the deletion in the dialog. Deletion is permanent and cannot be undone.
## Using templates when sending bulk texts
When you open the **Send text** drawer from the search results page, a **Start from a saved template** dropdown appears at the top of the Message section (only visible if your project has at least one saved template). Select a template from the dropdown to load its body into the message field.
You can freely edit the loaded text before sending -- selecting a template is just a starting point, not a commitment.
If you have already typed text in the message field before selecting a template, Broadstripes will ask you to confirm that you want to replace your current draft before loading the template.
After loading a template, merge fields in the body are replaced automatically with each recipient's data when the message is sent.
## Permission requirements
* **To manage templates** (create, edit, delete): Project admin role with the **Provision and send SMS** feature enabled.
* **To use templates when sending**: Permission to send bulk SMS messages.
# Text messaging
Source: https://help.broadstripes.com/docs/communications/text-messaging
Learn how to send, receive and track text messages in Broadstripes
## Overview
One of the most convenient features of Broadstripes messaging is that it allows you to send an SMS text to multiple workers at once, for instance, all the workers in a given shop or department, or everyone who has recently shown interest in coming to a rally you're planning.
You can also send a message to just one worker at a time. Either way, you can receive responses back on your cell phone, and can view a history of all your text communications in Broadstripes.
Get a look at how Broadstripes text messaging works in this overview video, or scroll down to watch a step-by-step video and learn how to get set up to send your first text blast.
## Video: Overview - How text messaging works in Broadstripes
## Video: How to set up and use text messaging in Broadstripes
***
## Before you can send a text message
A few things need to be in place before you start sending texts in Broadstripes:
1. Your organization must be [verified for SMS messaging](/docs/communications/getting-a-project-ready-for-texting).
2. You have to have **permission to send texts**, which an admin can give you.
3. You need a **virtual cell number**, which also must be provided by an admin. Broadstripes uses virtual numbers so that:
* organizers don’t have to give out their real cell numbers
* if an organizer moves on from a campaign, another team member can continue an ongoing text conversation in their place.
4. The people you want to text must be **opted in**. Broadstripes only texts cell numbers a worker has consented to be contacted on, so each recipient needs a valid cell number marked **Opted In**.
**Opting in your records is required — and it decides who actually gets your message.** Marking a cell number **Opted In** records the worker's consent to receive texts, which mobile carriers and regulations require. Broadstripes skips anyone whose cell number isn't opted in, so this is the step that determines who a text blast reaches. Learn how in [Text messaging permissions – opt in a cell phone](/docs/communications/text-messaging-opted-in-permissions).
### Recommended: Add your cell number to receive reply notifications
To receive a notification on your phone when a worker replies to a message you sent, add your personal cell number to your Broadstripes user account. This step is not required to send messages, but without it you will not be notified of replies.
This number won’t be visible to the workers you text -- they’ll receive texts from your virtual number. Here’s how to add it:
1. In the top-right navigation bar, click your **user disc** (the circle showing your initials or photo) to open the user menu, then select **User settings**.
2. In the **SMS notification settings** section, type your cell number into the **Phone number for SMS notifications** field, then click **Confirm and save**.
3. Broadstripes sends a confirmation text to your cell phone. Reply **YES** to confirm that you want to receive SMS notifications.
See [Set an SMS notification number](/docs/communications/set-a-sms-notification-number) for more detail.
## Sending a text message to multiple workers at once
From the search results page, you can easily send an SMS text to multiple workers using a bulk action.
Learn how step-by-step in the [Bulk Actions - Send SMS texts](/docs/communications/bulk-actions-send-sms-text-message) article.
## Sending a text to a single worker
You can also send a text to just one worker. You can use the method above (selecting only their name from the search results), or you can use a shortcut from the **Quick view** dialog:
1. From the **Search Results** page, click the **Quick view icon** () next to the worker's name.
2. Click the **Quick actions** tab in the **Quick view** dialog, then click **Send SMS**.
3. Compose your message (up to 480 characters). You can optionally attach an image (JPEG, PNG, or GIF, up to 600 KB) or a PDF (up to 5 MB) by clicking the **Attach a file** () button below the message. Then click **Send**.
## Receiving replies to your texts
Now let’s look at what happens if a worker **writes back to a text** you’ve sent using Broadstripes.
1. If someone **replies to a text** you've sent, you'll get a **text notification** on your cell phone with the **name of the project**, the **name of the** **worker** who responded and a **snippet** of their message.
2. At the bottom of the **notification text**, there’ll be a **link** that takes you to the full text conversation in your **phone’s browser**.
3. **Tap the link** and **log in** to Broadstripes if you’re prompted.
4. The **browser display** that opens will look just like a regular text conversation and will allow you to continue your conversation using your Broadstripes virtual number. You’ll be able to **send** and **see messages** as they arrive in real time.
## See a history of sent texts in Broadstripes
Seeing a **history** of the texts you've sent in bulk can be helpful for tracking and managing your communications. You'll also be able to see messages sent by others on your team. Here's how to view that history using Broadstripes:
1. Choose **Text messages** from the left-hand **sidebar**. This opens the **Text Messages** page, which has a **Sent Texts** tab and a **Templates** tab.
2. On the **Sent Texts** tab you'll see a **list** of every **bulk text** sent out for this project. Click the **info icon** to see more details about a specific text.
3. The detail page shows the message body, delivery statistics, and metadata such as the sender, recipient count, and sent date. If the message included a media attachment such as an image, an **Attached media** section appears at the bottom of the page. Click the image preview to open it in a new browser tab, or click **Download** to save the file to your device.
# Text messaging permissions - opt in a cell phone ▶️
Source: https://help.broadstripes.com/docs/communications/text-messaging-opted-in-permissions
One of the most convenient features of Broadstripes messaging is that it allows you to send an SMS text to one or multiple workers at once. But first, each worker will need to provide a valid cell phone number and consent, or be "**Opted in**," to receive your text messages.
Learn all about **opting in** a cell phone and other aspects of Broadstripes text messages in this video, or read on for step-by-step instructions:
## Video: Text messaging with Broadstripes (including Opt in instructions)
### Opt in cell phone numbers for text messaging
This article only covers one step in the process of sending text messages with Broadstripes – how to mark workers' cell phone numbers as **"Opted in."** Check out the full [Text messaging article](/docs/communications/bulk-actions-send-sms-text-message/) if you'd like to learn more about how to send SMS text messages using Broadstripes.
### Opt in a single worker's cell phone
1. From the **Search Results** page, click the **Quick view icon** () next to the worker's name.
2. In the **Quick view** dialog, click the **Contact info** section header (which displays a **pencil icon**) to open the contact info editor.
3. Click the **+Add phone/email button** to add a new phone number, or just begin typing to update an existing number.
4. Select **"Cell Phone"** as the phone type.
5. Choose the appropriate opted in reason under the **"Opted In"** drop-down menu.
6. Scroll down and click **Save**.\\
7. The worker has now been opted in to receive SMS text messages using Broadstripes. Check out the full [Text messaging article](/docs/communications/bulk-actions-send-sms-text-message/) if you'd like to learn about how to send SMS text messages.
### Opt in multiple workers' cell phones at one time with a Bulk Action
1. Open a tag list or run a search to find all of the workers you want opted in. (If you need help running a search, check out the [Search documentation](/docs/search/search-builder-build-an-advanced-search) articles.)
2. [Select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) you want to mark "Opted In." For this example we'll select all 95 workers in our search results.
3. Open the **Communications** menu and choose **Text messaging permissions**.
4. Choose an opted in reason from the **"Opted In"** drop-down menu.
5. Click **Update** to save.
6. All of the selected workers have now been opted in to receive SMS text messages from Broadstripes. Check out the full [Text messaging article](/docs/communications/bulk-actions-send-sms-text-message/) if you'd like to learn about how to send SMS text messages.
# Enabling and using merge fields in messaging
Source: https://help.broadstripes.com/docs/communications/using-merge-fields
# What are merge fields?
Merge fields are dynamic placeholders that can be inserted into messages to display specific information about the recipient. For example, you can use a merge field to display the recipient's first name, last name or even the value of a specific custom field.
## Enabling merge fields
There are basic merge fields, custom field merge fields and external system merge fields. Basic merge fields, like "First name", "Last name", and "Employer" are always available, but custom field merge fields will need to be enabled by a project admin in the custom field's Edit page.
External system merge fields will need to be enabled by a project admin in the external system's Edit page.
## Using merge fields
When creating a message, you can use merge fields by adding the merge field name in the message body. For example, to use the "First name" merge field, you would select "First name" from the merge field dropdown in the **Send SMS** or **Send Email** panel.
You may also add merge fields to an email template by inserting the merge field name in the email template body. For example, to use the "First name" merge field, you would insert the merge field by selecting the "First name" in the **Merge tags** dropdown menu.
# Contact Us
Source: https://help.broadstripes.com/docs/contact-us
Get in touch with our support team
Sorry you're having trouble. We understand that questions and issues can come up while using Broadstripes, and we're committed to helping you get the most out of our platform. Our support team is ready to assist you with any questions, technical issues, or feedback you may have.
Want to try our **AI Help feature** before reaching out to the support team? The AI assistant can instantly search through the knowledge base to point to relevant documentation and troubleshoot issues.
**To access AI Help:** Press **⌘ I** (Mac) or **Ctrl+I** (Windows) or type your question into the search box at the bottom center of any page on this help site.
### In-App Support (Fastest Response)
**Click the support icon in the lower right corner** of any page in:
* The Broadstripes Help Center
* The Broadstripes app
This opens our in-app support chat, which connects you directly to our support team. This is often the fastest way to get help, as our team can see your account and provide context-specific assistance.
**Benefits:**
* Real-time chat support
* Immediate access to your account information
* Quick resolution of urgent issues
* Available during business hours
### Email Support
**Email:** [support@broadstripes.com](mailto:support@broadstripes.com)
Send us an email with details about your issue, and our support team will get back to you as soon as possible. Email is great for:
* Detailed technical issues that need investigation
* Feature requests or feedback
* Non-urgent questions
* Issues that require documentation or screenshots
***
## 🔍 Before You Contact Us
You might find the answer quickly by:
Get AI assistance or browse our comprehensive documentation and guides
Watch step-by-step video tutorials on common tasks
Learn the basics if you're new to Broadstripes
Master advanced features and techniques
***
## 💡 Helpful Information to Include
When contacting support, please include:
* **Your project name** - This helps us locate your account quickly
* **A clear description of the issue** - What were you trying to do?
* **Steps to reproduce** - How can we recreate the problem?
* **Screenshots or videos** - Visual information is very helpful
* **Error messages** - Copy any error messages you're seeing
* **Browser and device information** - What browser and operating system are you using?
* **When it started** - Is this a new issue or has it been ongoing?
The more details you provide, the faster we can help you resolve your issue.
***
## ⏱️ Response Times
* **In-app chat:** Typically within 1-2 hours during business hours
* **Email support:** Usually within 24 business hours
* **Urgent issues:** Contact us via in-app chat for fastest response
***
## 🎯 Common Reasons to Contact Us
**Technical Issues**
* Features not working as expected
* Error messages or crashes
* Data not appearing correctly
* Performance or speed issues
**Account & Setup**
* User access or permissions questions
* Project configuration help
* Data import assistance
* Integration questions
**Feature Requests & Feedback**
* Suggestions for new features
* Feedback on existing functionality
* Ideas to improve your workflow
**Billing & Account Management**
* Subscription questions
* Invoice inquiries
* Account changes
# Changing your login email
Source: https://help.broadstripes.com/docs/customize/changing-your-login-email
You may need to change the email address that you use to log into Broadstripes and receive communications. (Can no longer access email, email has been compromised, etc.)
Users can change the email that is associated with their user login on their personal settings page. On your personal settings page, you have the option to change the way you use Broadstripes, including your SMS notification number, email address, password, and other preferences.
This article will take you through the steps of how to update your email inside the app:
1. Log in to Broadstripes with the old email address. In the top-right navigation bar, click your **user disc** (the circle showing your initials or photo) to open the user menu, then click **User settings**. This will take you to your personal settings page.
2. Navigate to the section labeled "**Change name and email address**". In this section, you can change your name, email address, and preferred time zone.
3. Enter your new email address in the designated field and click **Update Info.**
Your email address will be updated, and you can now use the new email address to log in and receive communications from Broadstripes.
# Create quick links
Source: https://help.broadstripes.com/docs/customize/create-a-quick-link
## Overview
**Quick Links** offer a simple dashboard customized to your specific needs—a fast one-click entry point to your most frequent searches or reports.
Configuring quick links is simple, and once it’s done, your customized quick links appear automatically, each time you log in. You can easily add new quick links to help you with the tasks you do most often.
To get started with quick links: Click the **homepage** link in the navigational panel.
Go to the **Quick Links** tab.
## Create a new quick link (or delete it)
1. To start, click **edit**.
2. Next, click the **Add new quick link button**.
#### Administrators only
If you are an administrator, you can create quick links for other users. Select their name from the drop-down list (as shown below) and click the **+ Add new quick link** button. When you've finished creating the new link, it will automatically appear on that user's own quick link tab.
3. Next (all users), choose the type of quick link you want to create and click **Next**.
4. These articles provide more details on setting up each type of quick link:
* [saved search quick links](/docs/customize/saved-search-quick-links)
* [status report quick links](/docs/customize/status-report-quick-links)
* [quick search quick links](/docs/customize/quick-search-quick-links)
5. To **delete** a quick link from your quick link tab, click **edit**, then click the **quick link actions** button (the ellipsis at the right end of the link) and choose **Delete**. Broadstripes asks you to confirm before deleting. Remember: Deleting the link will remove the link from your dashboard, but it won't delete the underlying saved searches or reports.
Now that you have created a quick link, you may [share quick links to a user group](/docs/customize/share-a-quick-link).
# Create events to track your goals
Source: https://help.broadstripes.com/docs/customize/create-events-to-track-goals
## Overview
**Events** are a special kind of custom field in Broadstripes. Each event can be created to contain one or more “**steps**” (checkboxes) to capture particular actions in the workflow of a given campaign activity.
Here are some examples of when to use events:
* Tracking petition signatures
* Tracking invitations, RSVPs, and attendance for a meeting or rally
* Recording whether someone has signed a membership card
## How do events work?
As you probably know, labor organizing involves answering lots of yes/no questions about the workers in the bargaining unit.
For example, imagine that you’re working on an external organizing card-signing drive. For each worker, you’d want to know:
* Have they signed a card?
* Do we have their signature on file?
* Did we email them a copy of their card?
Broadstripes lets you to capture information like this using an “**event**.” Each of the specific yes/no questions within the event is captured with a checkbox called an “**event step**.”
For the card-signing drive described above, you could create an event named “**Card**” with steps named “Signed”, “On file”, and “Email sent.” When complete, it would look like this:
## When do you use events?
Typically, events are used to capture things that are transient: important now, but possibly less so in the future. You can use events to record and track literal organized events, but you can also use events to keep track of important one-time information or occurrences.
As a rule of thumb, you should use an event to record information that occurred at a certain time, whereas you'll use [built-in fields](/docs/admin-guides/data-tools/built-in-data) (fields that come standard in all Broadstripes projects) or [custom fields](/docs/admin-guides/data-tools/custom-fields) (special fields created by your admin) to record information that is always true.
With most card-signing campaigns, once the election is won, that data will fade into history in the minds of the organizers, and new questions will become important. In these cases, events that are no longer relevant to your work can be made [inactive](/docs/admin-guides/data-tools/creating-an-event#make-an-event-inactive) to keep them from cluttering the project.
## Getting started with events
The rest of this article was designed to help users understand the basics of Broadstripes' events:
* [how to view events on a contact's record](/docs/customize/create-events-to-track-goals#viewing-events)
* [how to create a simple single-step event](/docs/customize/create-events-to-track-goals#how-to-create-a-single-check-off-event) (for example, to track who will attend a committee meeting)
* [how to search by event-related data](/docs/customize/create-events-to-track-goals#view-key-event-data-with-a-search)
* More: check out the [creating an event](/docs/admin-guides/data-tools/creating-an-event) in our Admin Guide to learn how to create a multi-step event as well as deactivate, edit, or delete an event.
## Viewing events
Once you've set up an event, that event and all its steps will be visible and can be edited by your users from the contact record's **Events Panel** on their **Overview tab**.
## Understanding check-offs and steps
Each **event** can be created to contain one or more "**steps**" (checkboxes) to capture particular actions in the workflow of a given campaign activity. You have quite a bit of freedom in Broadstripes to format events in the most useful way for your project. Depending on what information you are looking to capture, you may want to create a **single check-off event** or a **multi-step event**.
**Single check-off events** allow you to customize a simple yes/no checkbox for each contact in your project. They are best used when you need to capture only the most basic information about an event: for example, whether a worker is attending a meeting or not. This **Events Panel** (located on a contact record's **Overview tab)** shows a single check-off event called "**Organizing meeting**" with a single event step called "Attended".
**Multi-step events** allow you to capture more detailed and specific information about a contact with multiple checkboxes. Here are some example situations in which you might want to create an event with multiple steps:
* To closely track organizers' turnout: for instance, when promoting a meeting, steps called **Mailer**, **Direct invitation**, **Confirmed**, **Attended**, and **Follow up** give you a more precise picture of what organizers' efforts looked like than a single **Attended** check-off would.
* For events that have several options: for instance, a petition drive might have the steps **Signed** and **Refused** so organizers know whether someone was contacted, even if they didn't end up signing.
* To record attendance to an event for several different dates: for instance, an event called **Committee meeting** could have three steps labeled **3/1**, **3/8**, and **3/15**.
## How to create a single check-off event
For this example, we will track whether a group of workers is attending a committee meeting with the simplest method possible – the single check-off. (Read more about creating multiple-step events in the [creating an event](/docs/admin-guides/data-tools/creating-an-event) article.)
1. Get started by clicking the **Events** link on the left-hand navigation panel.
2. That will take you to your project's **events index page**, which lists the active events in the project.
3. Click the **+ New event** button in the upper-right corner of the page. A **new event entry row** will appear at the top of the list.
4. In the box, type "**Committee meeting**" and press **Enter** (or click away) to save the new event.
5. Next, create a single step under this new event. A blank step field appears below "Committee meeting" – type "**Attending**" to name the event's single step.
6. That's it – the event and its steps are saved as you go, so there's no separate Save button to click. Your new event now appears at the top of the events list.
#### Events can have multiple check-offs
If you want multiple checkboxes for a single event – for instance "**Invited," "Attended,"** and "**Followed up"** that's no problem. Just hover over the event and click the blue "**add step**" button that appears. Create a new step for each checkbox you want to see. Learn more in the [creating an event](/docs/admin-guides/data-tools/creating-an-event) article.
## "Single choice" and "Timeline tracked" settings
After creating an event, you can turn on "Single choice" for the event as a whole, and "Timeline tracked" for individual steps within it.
**Single choice –** A "Single choice" event is not the same as a "single check-off" event. Whereas a single check-off event has only one event step, a single choice event can have multiple steps. To turn it on, expand the event card and switch on **Single choice** in the details panel at the bottom of the card. Only one event step can then be checked at any given time. This can be useful when you want to record only a single current status rather than track your progress through a string of steps (for instance, you could turn on "Single choice" in the case of a petition drive event where the steps are "Signed," or "Refused").
**Timeline tracked –** this is a per-step setting. Expand the event card, click the **step settings** icon (the sliders icon on the step's row), and turn on **Timeline tracked** under **Behavior**. Users are then asked to enter a timeline note whenever they check or un-check that step during data entry. This can help your organization capture more information about why the event step was updated, including the name of the person updating the record and a time-stamp recording when it was changed.
## View and update a contact's event data
Now that the event is set up, it's ready for users to record their data. For this example, we'll open Aida Worker's record and check the **Committee meeting** checkbox to show she's attending the meeting.
1. First, we'll [search for Aida's record](/docs/getting-started/find-people-and-workplaces/) using the **Find people** card on the homepage.
2. We'll click on her name in the search results to open her record.
3. On the **Overview tab** of Aida's record, we'll scroll down to the **Events Panel** and click the checkbox to show she's attending the committee meeting.
4. If you plan to **update multiple records** at once, Broadstripes can greatly simplify that process with **customized layouts**.
Just like it sounds, a customized layout is a way for you to choose exactly which fields are displayed on-screen. For instance, you can add the attendance checkbox for the event you just created. This lets organizers easily check "Attending" for multiple workers all from a single data entry screen.
Customized layouts are simple to create and apply to your project. Learn about applying customized layouts in the [choose a layout](/docs/getting-started/choose-a-layout/) article, or create your own by reading the [save a layout](/docs/customize/save-a-layout/) article.
## View key event data with a search
You've created your event and users are updating records with event data. Now you may be wondering how to see event-related information – for instance, a list of all the people attending the upcoming committee meeting.
With Broadstripes, accessing this information is simple. Using the search bar at the top of any page, simply type "**"\[name of your event]=attending"**. A list of all the people you have marked "Attending" will pop up in your search results.
To search for the people you haven't yet gotten to attend, search "**\[name of your event]=none"**
To learn about saving or sharing either of these lists with other users, check out the [save and share a search](/docs/search/save-and-share-searches/) article.
## Learn more
Want to learn more about working with events, like how to create a **multi-step event** or how to **deactivate, edit,** or **delete** an event?
* Check out the [creating an event](/docs/admin-guides/data-tools/creating-an-event)
# Relationships
Source: https://help.broadstripes.com/docs/customize/create-relationships
Learn how to create and manage relationships between contacts to track connections
## Overview
If the Broadstripes **relationship** function is enabled for your project, you have the ability to track special relationships between individual workers. You can choose between a number of defined relationship types such as "Friend" or "Neighbor."
Once you've recorded these connections between workers, you can start to see visually how the people in a shop are interconnected using the "relationship tree" view.
In this article, we'll look at how to **create new relationships** and **work with existing relationships**.
A few other things we'll cover:
* How to [search for contacts by their relationships](#search-for-contacts-by-relationship)
* How to [see relationship information in your search results layout](#add-relationship-details-to-a-search-results-layout)
* How [relationships differ from social groups](#how-relationships-differ-from-social-groups)
## Video: Relationships
***
## Create a new relationship or view an existing relationship
For this example, we'll show how to add a new relationship between two coworkers to show that they are neighbors. Here's how:
1. From the **search results panel**, click the **Quick view icon** () next to the worker's name.
2. In the **Quick view** dialog, click the **Quick actions** tab and select **Relationships**.
3. By default, you'll see any **existing relationships** listed in the **table view** on the **relationship index page**.
4. Each **type of relationship** is shown in a separate section. Relationships can show ties between two individual people (for instance Bonnie and Reynard), or between a person and an organization (like Bonnie and the First Baptist Church).
5. Now we'll create a new relationship. Click the **+ New Relationship button**.
6. We'll choose **Neighbor of** from the **relationship type drop down menu**. (If you don't see the relationship type you're looking for, talk to your Broadstripes point person).
7. In the **related contact box**, type the **name** of the **worker** or **organization** with whom you want to create the new relationship. As you type, you'll see a **list of options** to choose from.
**What if the contact is not on the list?**
If you don't see the choice you want on this list, it means that contact is not in Broadstripes yet. You'll need to first add that contact to Broadstripes, then come back to this screen to create the Relationship (learn more about adding a contact in the [Add a shop or organization](/docs/working-with-records/add-a-shop-or-department) or [Add a person](/docs/working-with-records/add-a-new-person) articles).
8. Once you've chosen the relationship type and related contact, click the **Create relationship button** to save the new relationship.
9. You'll see the new relationship on the **relationship index page**.
***
## View complex relationships with the tree viewer
Getting a sense of how your workers are interconnected can be confusing. The tree viewer simplifies that.
1. To see relationships between workers visually, click the **View tree** tab near the top of the page.
2. The **tree view** will open. You'll see your contact at the center of the tree. In this example, we see Bonnie Worker at the center of the tree and each of Bonnie's direct relationships (Marcus, Reynaldo and First Baptist Church) connected by a separate branch.
3. By default, Broadstripes will also show the relationships under Bonnie's direct relationships – that is, her contacts' relationships – up to eight **degrees of separation**. In the example below, you can see Marcus's relationships to Conswella and Annmarie, which have two degrees of separation from Bonnie.
4. You can adjust your view to see fewer **degrees of separation** using the **slider**. We'll move the slider to **"1"** to see only those contacts who are related directly Bonnie.
5. You can also use the tree view to navigate between contact records. **Click** on any **contact's name** to jump directly to that contact's own **relationship tree** and see additional information about them.
***
## Choose a contact's primary organization relationship
If you use the relationships function to track relationships between **workers** and **organizations**, you can tag one organization as **"primary."** Here's how:
1. From the **relationship index page**, locate the relationship you want to mark as **primary**. Note that the relationship must be between a worker and an organization, not two workers.
2. Check the box next to the text **"Primary organization."**
3. You'll now see this organization listed under the contact's name in search results.
***
## Search for contacts by relationship
Once you've created relationships between contacts, it's simple to find anyone related to any other person or organization using the **search builder**.
1. For this example, we'll search for anyone who is a neighbor of Bonnie.
2. Start by clicking the **Search builder button** at the top of the page.
3. Use the **drop down menu** to choose **"Neighbor of"** as the **relationship type** under the **"Relationships" keyword group**.
4. In the next **drop down menu**, select **"contains the word(s)."**
5. Then type **"Bonnie"** to limit the results to only those people who are Bonnie's neighbors.
6. Click **"Search."**
7. Everyone who is Bonnie's neighbor will appear in the **Search Results** panel.
8. You can also run broader searches to see more relationships. For instance, to run a search to see anyone who is a neighbor of anyone else, modify the search by choosing **"Neighbor of"** and **"has any value."**
9. To see contacts with any relationship of any kind, search for **"Related to a contact"** and **"has any value."**
10. In the next step, we'll look at how to modify your **search results layout** to display information about relationships.
***
## Add relationship details to a search results layout
Seeing how contacts are related to each other can be very useful for your organizing campaign. Here's how to display relationship information each time you view search results.
1. From the **Search Results** panel, click the **Layout** drop down menu and choose **"Modify layout…"**
2. **Click once** on **"Relationships"** to include the column in your layout. It will turn from gray to a bright color and will be added to the left side of the layout builder.
3. **Drag and drop "Relationships"** to change its position in the search results matrix:
* The column name at the **top** of the layout builder will be the first column on the **left** when your search results are displayed, while column name at the **bottom** will display as the furthest to the **right**.
4. Once your layout is modified, you can either choose **apply** the new layout just once, or **save and run it**.
* Click **Apply without saving** to simply apply the layout once to your current search results. This will re-display the results with the new column, but won't permanently save any of the changes you've made to the layout.
* Click **Save changes** to overwrite the saved layout with the modifications you've just made. You'll see the changes each time you choose this layout.
5. **Relationship details** will now appear on your **Search results** panel. Each relationship type appears as a labeled heading, and the related contacts show inline — each name is followed by a **Quick view** icon you can click to open that contact's Quick view panel. When a relationship group contains more than 6 contacts, a **+N more** button expands the full list in place.
Each relationship type appears as a separate group. If a contact has more than 6 relationships in a group, a **+N more** button appears — click it to reveal all entries. Click **Show less** to collapse back to the initial view.
6. Learn more about working with layouts in the [Create and save a layout](/docs/customize/save-a-layout) article.
***
## How relationships differ from social groups
Now that you've learned about creating and working with relationships, you may be wondering when it's best to use them. If you also use Broadstripes' social groups function, you may have questions about how social groups and relationships differ.
Simply put, it's best to:
* **use relationships when** you want to show specific types of *individual* connections (person to person, or person to org).
* **use social groups when** you want to keep track of temporary group dynamics or unique social connections (like people who share a lunch break or Knicks fans).
Some more ways relationships and social groups differ:
* Unlike with relationships, which have specific types set by an admin, you can create as many social groups as you want, and delete them when they're no longer useful.
* Once you've set up social groups, you have the option to tag leaders. With leaders in place, social groups can become a tool for building organizing structures in Broadstripes, a layer of functionality not possible with relationships.
You can read the [social groups article](/docs/customize/create-social-groups) to learn more about creating and working with social groups.
# Create social groups to track workers by any trait
Source: https://help.broadstripes.com/docs/customize/create-social-groups
## Intro
Social groups are a feature that let you group and view workers by anything they have in common – whether it's the sports teams they follow, a common native language, or a shared break time.
## Why use social groups?
Social groups can be a great organizing tool for your campaign.
With social groups, you can add and remove the workers you are tracking, and view them all on a single screen – even if they don't work in the same department, or share other formal attributes in their organization. You can create as many social groups as you want, and just delete them when they're no longer useful.
Once you've set up social groups, you can also tag their leaders (optional). With leaders in place, social groups can become a tool for building organizing structures in Broadstripes. From any existing social group, it's just a few more clicks to [create a leadership structure](#use-social-groups-to-create-a-leadership-structure).
Here are some examples of when to use social groups:
* To track unique social connections between workers
* To follow up with a group of people you've talked to during a break time or rally
* To connect people who might influence each other's decision making, even if they have no formal ties in the workplace
## Video: Create social groups
## Create a social group and add or delete members
For this example, we'll add a new social group called **Knicks fans** at **Basic Hotel.** Here's how:
1. Click the **Social Groups** link in the navigational panel.
2. Select the **organization** where you want to add the new social group.
3. This will take you to the **social groups index page** which shows the social groups that have already been created for the selected organization.
4. To create your new social group, click **Add members**.
5. You'll see a **list of all the workers** at the organization. Scroll to one of the workers you want to include in your new group, and **click the plus icon** next to their name.
6. A **search box** opens next to their name. **Type the name of the new group** you want to create, then choose the **Create "Knicks fans"** option that appears in the drop-down list.
7. Broadstripes will create a new social group and automatically add the new member.
8. You can continue to **add more workers** to the new social group in the same way. If you just **type the first few letters of the social group** you want, it will appear in a drop-down list, so you don't have to type the group's full name each time.
9. When you're done adding workers, **click Show groups.**
10. You'll see your completed social group.
11. To **delete a member** of the group, just **hover over** their name and **click the minus sign icon** that appears.
## Select (or remove) the leader of a social group
In the last section, we created a new social group and added workers to it. Now we'll give the social group a leader and show how to turn that leader and their followers into Broadstripes organizing leadership:
1. To **select** a certain worker as a leader, they must already be a member of the group they're going to lead (see above for how to add a member). Once they are part of the group, hover over and **click the up arrow icon** next to their name.
2. The new leader will appear at the top of the social group in **bold**.
3. To **remove** the leader, hover and **click the down arrow** next to their name. They will remain in the group, but no longer be the leader.
## Use social groups to create a leadership structure
Social groups can be a great shortcut for creating a lasting leadership structure in your project. Here's how:
1. In any social group where you've identified a leader, you'll see the **leadership tree icon** .
2. **Click the leadership icon** to open a dialog box that will walk you through creating a leadership structure.
3. When the dialog box opens, you can choose from several options:
* By default, Broadstripes will set the social group leader as the new leader of any workers in the group **who do not already have a leader**.
* Select "**all**" to set the social group leader as the new leader of **all workers** in the social group, overriding their previous leadership settings.
* Select "**none**" to deselect all workers in the social group, then individually check the workers you would like the social group leader to lead.
4. Click **Create Structure** to save your changes.
5. Broadstripes will automatically make updates to the Leadership structure based on your choices. Click the "**Leadership**" **tab** to see the new structure you've created.
6. On the Leadership index page, click the **"View Tree" tab**.
7. **Double-click** any tree node to expand the branches and see your updates.
## Delete or rename a social group
1. To **delete** **the social group** entirely, **click the minus sign icon** in the upper right corner of the social group and click **OK** to confirm the deletion. The members of the group will remain in your project as contacts, but will no longer be associated with the deleted social group.
2. To **rename** the social group, **click the edit icon** next to the group's name. **Type the new name** in the dialog that appears and click **OK**.
# Embed a layout with a saved search
Source: https://help.broadstripes.com/docs/customize/embed-a-layout-with-a-saved-search
Attach a saved layout to a saved search so the same columns display each time you run the search.
Attaching a layout to your saved search means you'll see the same columns of data each time you run the search — without added steps.
## Prerequisites
Before you can attach a layout to a saved search, you need a saved layout. If you don't have one yet, see [Create and save a layout](/docs/customize/save-a-layout) to learn how.
## Attach a layout when saving a search
1. **Run the search** you want to save. (Learn more about creating searches in the [search by name](/docs/getting-started/search-by-name) or [search builder](/docs/search/search-builder-build-an-advanced-search) articles.)
2. Click the **Save search** button in the upper-right corner of the search results panel.
3. In the save search dialog, enter a **name** for your search.
4. Choose a **search type** — Personal, Shared, or For someone else.
5. Use the **Attach a layout** dropdown to select a saved layout. The dropdown lists your saved layouts grouped by **Personal** and **Shared**.
If you set the search type to **Shared** or **For someone else**, only **shared layouts** appear in the dropdown. This prevents personal layouts from being attached to searches that other users will run.
6. Click **Save**. Each time the search is run in the future, Broadstripes automatically displays the columns defined in the attached layout.
## Change or remove an attached layout
To change the layout attached to an existing saved search, edit the search and select a different layout from the **Attach a layout** dropdown — or select **None** to remove the layout attachment.
# Notification preferences
Source: https://help.broadstripes.com/docs/customize/notification-preferences
Control which categories of email Broadstripes sends you and whether the What's new panel opens automatically.
# Notification preferences
Your **Notification preferences** let you choose which categories of email you receive from Broadstripes and control in-app panel behavior. You can update these from your account settings page or from the unsubscribe link in any product notification email.
## Email categories
| Category | What it includes | Can be disabled |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------- |
| **Product notifications** | Reminder emails about your organizing activity, like alerts when workers in your project haven't been contacted recently | Yes |
| **Feature update announcements** | Emails about new Broadstripes features and improvements | Yes |
| **User notifications** | Emails directly related to your account and project work, such as scheduled report deliveries and invitation emails | No (required) |
## In-app panel preferences
| Preference | What it controls | Can be disabled |
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
| **Open the What's new panel automatically when there's something new** | Whether the [What's new panel](/docs/customize/whats-new-panel) slides open on its own when you land on your project dashboard after a new release (at most once per release and once per week) | Yes |
## Update your preferences from account settings
1. In the top-right corner of Broadstripes, click your **user disc** (the circle showing your initials or photo) to open the user menu.
2. Click **User settings**.
3. Scroll down to the **Notification preferences** section.
4. Check or uncheck the categories you want to receive.
5. Click **Update preferences** to save.
## Update your preferences from an email link
Broadstripes product notification emails include an unsubscribe link at the bottom. Clicking it opens a preferences page where you can check or uncheck the email categories you want to receive, then click **Save Preferences** to confirm.
If you follow an unsubscribe link from an email and the link has expired or is invalid, you will see an "Invalid link" message. In that case, update your preferences directly from your account settings page instead.
# Adding Profile pics
Source: https://help.broadstripes.com/docs/customize/profile-pic
## Overview
Broadstripes allows users to add a profile picture to a person’s record. You can attach an image to go along with the person’s information. Broadstripes will even produce a picture grid to take with you for house visits and events.
### Upload a profile pic
Go to a person’s record and select the **Attachments** tab.
Choose the image file you want to use as the person’s profile pic(images with a portait orientation tend to display better). Check the box that says **“This image is a profile pic,”** then click the **“Upload Attachment”** button.
The image will now appear as an attachment and marked as a profile pic.
### Add profile pics to search layout
Now that you have added profile pics to your people, you may view them in your search results. You must modify your search layout to include the profile pic column.
Select **Modify layout** from the **Layout** drop-down menu on the Search Results page.
Click on **Profile pic** to add the column to your layout. The Profile pic column will be added to the end of your current layout. Click and drag to reorder the column placement. You may apply the change to your current layout without saving or save as a new layout.
Now that your layout has been applied, you can view a person’s profile pic in the search results.
### Picture Grid
Broadstripes will produce a printable **Picture Grid** report that includes the person’s photo, the full name of the person, the associated shop & department, and the classification/job title.
Select the people you want to be included in your Picture Grid from the search results. Select **Picture Grid** from the Reports drop-down menu.
A PDF containing your selected contacts’ photos and corresponding information will be generated.
# Quick check-off
Source: https://help.broadstripes.com/docs/customize/quick-check-off
Check off event steps for multiple people quickly using the Quick check-off dialog
The **Quick check-off** dialog lets you record event step check-offs for multiple contacts in rapid succession -- search by name, click (or press Enter) to check off, and move on to the next person without leaving the dialog. It is designed for high-volume field-reporting situations where you need to log the same step for a long list of people quickly.
## Opening Quick check-off
There are three ways to open the Quick check-off dialog:
* **Sidebar link** -- click **Quick check-off...** ( with a lightning bolt badge) in the left sidebar. This option is visible to all non-read-only users.
* **Keyboard shortcut** -- press **Alt+Q** (Windows/Linux) or **Control+Q** (Mac) from any page.
* **Events page** -- on the Events admin page, hover over any event step row and click the Quick check-off button that appears. The dialog opens pre-targeted at that step.
## Using the dialog
The dialog is divided into two panes: a **left pane** for the check-off loop and a **right pane** showing the session log.
### Step 1: Choose an event step
The first row in the left pane is the **Event step** chooser. Click it to open a searchable menu of all active event steps, grouped by event. Steps you have used recently appear at the top under **Recently used**.
* Start typing in the chooser to filter steps by event or step name. Multiple words are supported -- "rally att" finds "Rally: Attending".
* If you opened the dialog from the Events page, the step is already selected and focus moves to the search box.
### Step 2: Search for people
Type a name (at least two characters) in the search box to find matching contacts. Results appear in the **Matches** list as you type.
* Use the **arrow keys** or **Page Up/Down** to move through the list without leaving the search box.
* Press **Enter** to check off the highlighted match, or click any row.
If there are more matches than the dialog can display, a note at the bottom of the list shows the total count: "Showing first 100 of N -- keep typing to narrow."
#### Find people by employer name
Turn on **Also find people by employer names** to include people whose workplace matches your search term in addition to their own name. The dialog also searches parent organizations in the employer hierarchy, so searching for a parent company name surfaces workers at all its subsidiaries.
Toggle this setting with the **Alt+E** (Windows/Linux) or **Option+E** (Mac) shortcut from anywhere in the dialog.
### Step 3: Check people off
Click a match (or press **Enter**) to check that person into the currently selected step. Each check-off is applied immediately -- the dialog does not require a final confirm. The person's name appears in the **Checked just now** log on the right.
Checked-off entries disappear from the Matches list automatically. Switch to a different step at any time to continue checking off for that step.
## The session log and undo
The right pane, **Checked just now**, shows everyone you have checked off during this session, newest first. Click **Undo** on any entry to reverse that check-off. Undone entries are removed from the log.
Undo is not available for single-choice replacements. When you check someone into a step in a single-choice event and that check-off automatically replaced a previous step, the log shows what was replaced but does not offer an Undo button, because reversing only one half of the replacement could leave the record in an inconsistent state.
## Single-choice and timeline-tracked events
The step chooser shows badges next to steps to help you understand how they behave:
* **Single choice** -- only one step in this event can be checked at a time. Checking a new step automatically unchecks the previous one.
* **Timeline** () -- checking or unchecking this step adds a note to the contact's timeline.
The **Event step details** panel in the upper-right corner of the dialog also shows the event description and the number of contacts previously checked for the selected step.
## Closing the dialog
* Click **Cancel** (if no check-offs have been recorded) or **Done** (once you have checked someone off) to close the dialog.
* Press **Cmd+Enter** (Mac) or **Ctrl+Enter** (Windows/Linux) to close from anywhere in the dialog.
Check-offs are applied immediately as they happen, so closing the dialog at any point is safe.
## First-time walkthrough
When you open Quick check-off from the sidebar link for the first time (with no step pre-selected), a four-stop guided tour highlights the key areas of the dialog. Click **Next** to advance through the stops, or **Got it** (or **Done** on the last stop) to dismiss the tour. The tour will not appear again after it is dismissed.
## Learn more
* [Create events to track your goals](/docs/customize/create-events-to-track-goals) -- overview of events and event steps
* [Check/uncheck event steps (bulk action)](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-assign-event-steps) -- check off a step for many pre-selected contacts at once using bulk actions
# Quick search quick links
Source: https://help.broadstripes.com/docs/customize/quick-search-quick-links
## Why add a quick search link?
A **quick search quick link** gives you a fast, dynamic search with fixed layout and output preferences -- you choose who to search for each time you run it, and Broadstripes automatically presents the results in the right format with no extra steps.
Looking for the quickest way to simply pull up a person or workplace? Use the [Find people and Find workplaces cards](/docs/getting-started/find-people-and-workplaces) on your homepage. A quick search quick link is for when you also want saved layout and output settings applied to the results.
### Example
Imagine that I frequently create lists of workers from each of the various departments at the shops I organize. After running a department search, I always apply the same “Department list” layout, and always export the list to PDF so I can print it and keep it with me when I’m away from my computer.
If I ran an ordinary search to create these printed lists, I’d need to select the layout and output format *each time* I ran the search. Alternatively, if I used a saved search with a saved layout, I’d have to create a *separate search* for every single department list I wanted to print.
By creating a **quick search quick link**, I can keep the search flexible but specify the “Department list” layout and the PDF output format. The best part is that I can set it up once, and run the search over and over (choosing any department I want to see) without ever having to specify those output settings again.
Here’s how:
1. Start on the quick links tab and follow the steps outlined in the article [create a quick link](/docs/customize/create-a-quick-link) to create your new quick link.
2. Choose **a quick search** as the type of link you want to add and click **Next**.
3. Choose the **layout**. For this example, I’ll choose **Department List** since this is the layout I want Broadstripes to use each time the search is run.
4. Click **Next**.
5. Choose the output type and click **Next**. For this example, I’ll choose **PDF**.
6. When the output options window opens, give the file a **Title** and **File Name** and specify any other output details that are important to you. Click **Next**.
7. **Name** the quick link. This is the name that will appear on the quick link button on your quick link tab. Click **Done** to save.
8. You’ll see the new quick link button on your **Quick Links tab**. Click it to launch a search.
9. You’ll be prompted to enter **search criteria**: the employer, location, or department whose people you want to see. We’ll enter the department we want to see (Housekeeping) and click **Go**.
10. After you have chosen the employer or location, you can open the Options panel to change the report's name, layout, and format.
Broadstripes will automatically apply your layout and create the PDF as soon as you click Go. You’ll see a **pop up message** explaining that your PDF report is being created and will download.
11. To view and print your PDF, you have two choices:
* You can **stay on the current page** and wait for the report to download to your designated download folder.
* You can **leave the current page** and **check in later** to see if the report is ready. To check for the report later, click the **Reports** link in the navigation panel. That link brings you to the **Requested Reports** page where you can download any requested list at any time.
12. To generate another list for another department, just click the same **quick search button** on your **quick links tab** again. The link will remain there even after you've logged out and logged back in again.
13. If you ever need to **delete** a quick link, click the **ellipsis** icon on the quick link button to open the **Quick link actions** menu, then click **Delete**.
14. You can also [share quick links to a user group](/docs/customize/share-a-quick-link).
# Create and save a layout
Source: https://help.broadstripes.com/docs/customize/save-a-layout
## Overview
Together with searches, the Broadstripes layout feature is your key to viewing the records you want in a format that matches your process. While a *search* filters the set of contacts displayed by the criteria you choose, a *layout* determines which exact information to display about those contacts, and in what order.
In short, layouts let you completely customize the contents of the search results panel, i.e. which data fields you see. You can choose just the columns of data you want, and leave out the ones that might get in the way.
What's more, you can create different layouts for different teams or tasks. By creating good layouts, you can view and record information in the most effective way possible. Once you've created a layout, you can apply it to any search results, any time. You can even share layouts with other users so whole organizing teams can work from the same set of crucial information.
## Create a layout
1. To build a new layout, start on the search results panel. (Learn about running a search in the [search by name](/docs/getting-started/search-by-name/) article.)
2. In the upper-right area above your search results, click the drop-down menu next to the word **Layout** as shown below. Our drop-down menu is labeled "**unsaved**," but yours may look slightly different depending on whether you are currently using a saved layout or not.
3. Click **Build new layout...**
4. A layout-building tool will open.
5. Using the layout builder, **click once on any column** listed under **"Other available columns:"** to include it in your layout. Each column you choose will be added to the upper-left portion of the layout builder in the same order you choose it.
6. For this example, we are going to create a layout that will help us run a card-checking campaign. We'll choose some basic information about the workers as well as their employment info:
* **Contact** (choosing this will display their first and last name in a single column. Checking "**show employments**" will add their full employment details to that column, too — for this example, we'll leave that unchecked)
* **Department** (where they work)
* **Classification** (their job position, sometimes labeled "Job position")
* **Code** (their assessment code, sometimes labeled "assessment")
* **Notes**
* **Phone and email**
7. For this card-checking layout, we'll also choose to display information specifically related to workers' cards from the **Card** event under the **Active events** section:
* **Signed**
* **On file**
* **Email sent**
8. Clicking the **plus sign** next to the event name **Card** will add all three of the event steps (**Signed**, **On file**, and **Email sent**) to the layout at once (or you can single-click on each step name to add them one at a time).
#### Adding events and event steps to your layout
In this example, all the data related to signed cards is part of a **custom event** called "Card" that we set up specifically for this project. Depending on the events you have set up, the column choices might look a little different in your project.
However, in *all* projects, your **active events** and **event steps** will always be shown in the lower section of the layout builder.
Note that creating events and event steps is usually handled by a project administrator, but you can read about when and how to use events in the [create events to track goals](/docs/customize/create-events-to-track-goals) article.
9. Once you've added all the columns you need to your layout, you can make some adjustments if needed:
* **drag and drop column names** to change their position in the search results matrix (the column name at the top of the layout builder will be the first column on the left when your search results are displayed, while column name at the bottom will display as the furthest to the right).
* **delete unwanted columns** by hovering over the column name and then clicking the minus sign icon that appears.
10. Once you have your layout configured the way you want it, give it a **name**, and click to **Save as new layout**. (If you just want to apply the layout once, and don't want to save it, click **Apply layout**.)
11. Clicking either button will return you to your search results, re-displaying the records according to your new custom layout.
## Modify a layout
1. If you want to make changes to a saved layout, for instance, add a column to the layout, click the **Layout drop-down menu** again.
2. Choose to **Modify layout...**
3. The layout builder will open. Using the builder, make the desired changes to the layout, using the same steps you used when you [created the layout](#create-a-layout). For instance, to add a column to your layout, **click once on any column** listed under "**Other available columns:"**
4. Once your layout is modified, you can either choose **apply** the new layout just once, or **save and run it**.
* Click **Apply without saving** to apply the layout to your current search results. This will re-display the results, but won't permanently save any of the changes you've made to the layout.
* Click **Save changes** to overwrite the saved layout with the modifications you've just made.
## Use your saved layout again with new searches
1. To apply a saved layout to another set of search results, start by running the search.
2. Next, click the **Layout drop-down menu**.
3. Your saved layouts will appear in the lower half of the drop-down menu under the words YOUR PERSONAL LAYOUTS.
4. **Hovering over the name** of any saved layout will open a pop-up box. From this pop-up box you can:
* see **details about the layout**, including which specific columns are included in the layout.
* click to **share with one other user** , **edit** or **delete** the saved layout.
* if you are a project administrator, click **Make default** to make this layout the default for the whole project, so it is applied automatically for every user. If the layout is personal, Broadstripes asks you to confirm, then converts it to a shared layout before making it the default.
* click **Share** to convert the layout to a shared layout that all other users will see. Sharing the layout will make it available to them in their own **Layout drop-down menu.**
5. If you want to apply a saved layout to your search results, **click on the name** of the saved layout. This applies it and instantly displays your search results using the new layout.
# Create and save a sort
Source: https://help.broadstripes.com/docs/customize/save-a-sort
## Sort search results
Sometimes a search brings back the records you need, but they're hard to make sense of because of the way they're ordered. For example, in a search for workers with signed cards, you may be given results ordered by last name, when what you really want to see is workers grouped together by department first, and then by last name.
Broadstripes makes it simple to build custom sorts like this. You can even save and share a sort with other users in your project.
## Create your sort
1. Click the **Sort by** link located just above your search results on the right-hand side of the page.
2. Choose to **Build a new sort...**
3. A sort-building tool will open.
4. Using the sort builder, click once on any field to include it in your sort. Each field you choose will be added to the upper portion of the sort builder. We'll choose **Department** for our main sort and then click **Last name** for our secondary sort.
1. Once you've chosen all the fields you want to use in your sort, you can manipulate them to refine your sort.
* **drag and drop fields** to change the search priority (the field at the top will be sorted first, with each field below acting as a sub-sort)
* click the **A-Z icon** to toggle between ascending and descending order
2. When your sort meets your needs, give it a **name** and click **Save as new sort.** (If you just want to run the sort once, and don't want to save it, click **Apply sort.**)
3. Clicking either button will **re-sort and display your search results** according to your new sort.
## Modify a sort
1. If you want to make changes to a saved sort, click the **Sort by** link again.
2. Choose to **Modify sort...** and make changes, just like you did when you first created it above.
3. Once your sort is modified, you can either choose to run the new sort, or save and run it.
* Click **Apply without saving** to run the sort on your current search results. This will re-sort and display the results, but won't save any of the changes you've made to the sort.
* Click **Save changes** to overwrite the saved sort with the modifications you've just made.
## Use your saved sorts again with new searches
1. To sort another set of search results using saved sort criteria, start by clicking the **Sort by** link.
2. Your saved sorts will appear in the lower half of the drop-down menu under the words YOUR SAVED SORTS.
3. **Hovering over the name** of any saved sort will open a pop-up box. From this pop-up box you can:
* see **details about the sort**, including which specific fields are included in the sort as well as details about sort order.
* click to **edit** or **delete** the saved sort.
* click to **Share** the sort with other users. Sharing the sort will make it available to them in their own **Sort by** drop-down menu.
4. If you want to apply a saved sort to your search results, **click on the name** of the saved sort. This applies the sort and displays your search results using the new sort order.
5. Your records are now sorted according to **department** and then by **last name**.
# Saved search quick links
Source: https://help.broadstripes.com/docs/customize/saved-search-quick-links
Create quick links from the saved search dialog to access your most-used searches with one click.
## Overview
If you have a few saved searches that you use more than the rest, **quick links** let you access them with a single click from your dashboard. You can create a quick link directly from any saved search dialog — just choose the output format and you're done.
Quick links support four output formats:
* **Search results** — view records on-screen where you can browse and edit them
* **PDF** — download a PDF file of the search results
* **Spreadsheet (XLSX)** — download a Microsoft Excel spreadsheet
* **Spreadsheet (CSV)** — download a comma-separated values file
## Create a quick link from the saved search dialog
The fastest way to create a quick link is directly from the saved search dialog. You can do this when editing an existing search or when saving a new one.
1. Open the saved search dialog. You can do this from:
* The **Saved Searches** page — click the **actions menu** (⋯) on a search and select **Edit**
* The **search dropdown** in the top navigation — click the edit icon on a saved search
* The **search results** page — click **Save search** to save a new search
2. In the dialog footer, click **Save as quick link**.
3. The **Create quick link** dialog opens. Here you can configure:
* **Display name** — the label that appears on your dashboard (defaults to the search name)
* **Format** — choose how you want to see the results
4. Click **Create quick link** to finish. The quick link is added to your dashboard immediately.
If you haven't saved the search yet (creating a new search), clicking **Save as quick link** saves the search first, then opens the quick link dialog. You don't need to save separately.
### PDF options
When you select **PDF** as the format, additional options appear:
* **Title** — the title printed on the PDF
* **Paper size** — choose from US-Letter, A4, and other standard sizes
* **Orientation** — portrait or landscape
* **Shrink to fit** — scale content to fit the page width
* **Large font** — increase the font size for readability
* **Wall chart mode** — format the output for large-format printing
* **Show followers** — include follower records in the output
### Spreadsheet options
When you select **Spreadsheet (XLSX)** or **Spreadsheet (CSV)**, additional options appear:
* **File name** — the name of the downloaded file
* **One row per contact** — consolidate multiple rows for the same contact into a single row
* **Value separator** — when using one row per contact, choose how multi-values are separated
* **One column per contact info type** — split contact info into separate columns (with options for metadata placement)
* **Separate contact info columns by external system** — create separate columns for each external system
* **Show followers** — include follower records in the output
## Assign quick links to other users (administrators)
Administrators see an additional **Who is this for?** section in the quick link creation dialog. This lets you create quick links on behalf of other people:
* **Me** — create the quick link for yourself (the default)
* **Other user or users** — search for and select one or more users to receive the quick link
* **A user group** — select a user group, and all members will receive the quick link
When you assign a quick link to multiple users or a user group, Broadstripes creates individual quick links for each user. A summary message shows how many were created and how many were skipped (if some users already had that quick link).
If you already have a quick link for a particular search in a given format, the **Me** option will be disabled for that format and a note will indicate the quick link already exists.
## Create a quick link from the Quick Links tab
You can also create quick links from the **Quick Links** tab on your homepage dashboard. This method uses a step-by-step wizard:
1. Go to your **homepage** and open the **Quick Links** tab.
2. Click **edit**, then click **Add new quick link**.
3. Choose **a saved search** as the type of quick link.
4. Select the saved search you want from the list and click **Next**.
5. Choose the **output format** and click **Next**.
6. **Name** the quick link and click **Done**.
For full details on creating quick links from the dashboard, see [Create quick links](/docs/customize/create-a-quick-link).
## Delete a quick link
To remove a quick link from your dashboard, click the **ellipsis** icon on the quick link button on the **Quick Links** tab to open the **Quick link actions** menu, then click **Delete**. Deleting the link removes it from your dashboard but does not delete the underlying saved search.
# Share quick links
Source: https://help.broadstripes.com/docs/customize/share-a-quick-link
Share quick links with user groups from your Quick Links page
You can easily share quick links to user groups on your Quick Links page.
The **Share** action is only available to project administrators.
This guide will walk you through the process of sharing quick links with user groups from your Quick Links page:
1. To share a quick link, you must first [create it](/docs/customize/create-a-quick-link). Once created, find the quick link on the Quick Links tab and click the **ellipsis** icon on its button to open the **Quick link actions** menu.
2. Click **Share**.
3. A dialogue box will appear where you can select the user group with which you want to share the quick link. Select the appropriate user group.
4. Click the **Share** button.
Once shared, the quick link will be available on the Quick Links page for all members of the selected user group.
# Status report quick links
Source: https://help.broadstripes.com/docs/customize/status-report-quick-links
## Intro
Adding a **status report** to your quick links tab puts up-to-date aggregate counts just a click away. What's more, when you create the quick link, you can select how you want Broadstripes to present the reports: on-screen, or as PDF or Excel files that you can download and use offline.
Once your links are created, Broadstripes remembers your preferences. You'll see the data you need in the correct format – each time – with just the click of a button.
For this example, we want to add a quick link that shows us a status report for all our shops. We'll create the quick link based on a saved status report that's already in Broadstripes, and we'll choose to have the results exported to a PDF so we can print it and share it with others offline.
## Create a quick link for a status report
1. Start on the quick links tab and follow the steps outlined in the article [create a quick link](/docs/customize/create-a-quick-link) to begin.
2. Choose **a status report** as the type of link you want to add and click **Next**.
3. You'll see a list of all your saved status reports. Choose the report you want and click **Next**.
4. Choose the **output format** you want.
#### Choosing output formats
**View on-screen:**
* **HTML** – your report appears on-screen where you can view (but not edit) the data.
**Export and save:**
* **PDF** – report is exported as a PDF file (ideal for printing).
* **Spreadsheet (XLSX)** – report is exported as a Microsoft Excel spreadsheet file.
5. For our example, we'll choose **PDF**.
6. **Name** the quick link. This is the name that will appear on the quick link button on our dashboard, so we've noted that it's a PDF to help us remember. Click **Done** to save.
7. The new quick link now appears on our quick links tab.
8. Clicking the **Shop Status Report (PDF)** quick link button will generate the report.
9. To download and view your PDF, you have two choices:
* you can **stay on the current page** and wait for the report's **download dialog** to appear.
* you can **leave the current page** and **check in later** to see if the report is ready. To check for the report later, click the **Reports** link in the navigation panel. That link brings you to the **Requested Reports** page where you can download any requested report at any time.
10. Any quick link you create will remain on your **quick links tab** even after you've logged out and logged back in again.
11. If you ever need to **delete** a quick link, click the **ellipsis** icon on the quick link button to open the **Quick link actions** menu, then click **Delete**. Deleting the link will remove it from your tab, but it won’t delete the underlying saved report.
# What's new panel
Source: https://help.broadstripes.com/docs/customize/whats-new-panel
Stay current with recent Broadstripes updates from the What's new panel in the user menu.
# What's new panel
The **What's new** panel shows recent product updates -- new features and improvements -- directly inside Broadstripes. You can open it any time from the user menu, or let it open on its own when something new has been released.
## Opening the panel
1. Click your **user disc** () in the top-right corner to open the user menu.
2. Select **What's new** () from the menu.
The panel slides in from the right side of the screen.
## The unread indicator
When new updates have been released since you last opened the panel, a small blue dot appears on your avatar disc and a count badge appears next to the **What's new** menu item. The dot and badge clear the next time you open the panel.
## What the panel shows
Each update appears as a card with:
* A colored badge: **NEW** (blue) for new features or **IMPROVED** (green) for enhancements.
* The release month.
* A title and short description.
* An optional preview image.
* A **See how it works** link that opens the relevant help article.
## Auto-open on the dashboard
The **What's new** panel can open on its own when you land on your project dashboard after a new release. This happens at most once per release and no more than once per week, so you won't see it on every visit.
A callout at the bottom of the panel explains why it opened automatically. You can dismiss the callout with the **X** button or turn off auto-opening entirely using the toggle described below.
## Controlling auto-open
A toggle at the bottom of the panel -- **Open automatically when there's something new** -- lets you turn auto-opening on or off without leaving the panel. The setting saves immediately.
You can also control this setting from your account settings:
1. Click your **user disc** and select **User settings**.
2. Scroll to the **Notification preferences** section.
3. Check or uncheck **Open the What's new panel automatically when there's something new**.
4. Click **Update preferences** to save.
## Full release notes
The panel footer includes a **Full release notes** link to the Broadstripes help site where you can browse the complete history of changes.
# Your profile photo
Source: https://help.broadstripes.com/docs/customize/your-profile-photo
Upload, crop, and manage the photo that appears on your user avatar disc in Broadstripes.
Your **profile photo** is the picture that appears on your user avatar disc -- the circle in the top-right corner of the Broadstripes navigation bar. When you upload a photo it replaces your initials. Your photo will begin to appear in additional places throughout the app (such as on notes you add) during the second half of 2026. It is not shared or visible outside the app.
## Upload a profile photo
1. Click your avatar disc () in the top-right navigation bar to open the user menu.
2. Select **User settings**.
3. Scroll to the **Profile photo** section.
4. Click the upload tile labeled **Upload a photo**, or drag an image file directly onto it.
Supported file types: JPEG, PNG, WebP, and HEIC/HEIF (iOS camera photos). Files must be image files; other file types are rejected with an error message.
## Crop and save your photo
After you select or drop an image, a crop editor opens with a circular preview.
* **Pan**: drag the image to reposition it inside the circle.
* **Zoom**: drag the **Zoom** slider to zoom in or out.
When the framing looks right, click **Save photo**. Your disc updates immediately -- no page reload needed.
Click **Cancel** to go back without saving.
## Replace or remove your photo
Once you have a photo, two buttons appear next to your photo preview:
* **Replace photo** () -- opens the crop editor so you can select and crop a new image.
* **Remove photo** () -- shows a confirmation dialog. Click **Remove photo** to confirm, or **Keep photo** to cancel. Removing your photo reverts your disc to showing your initials.
## Your disc color and your role
The color of your avatar disc reflects your highest permission tier in the current project:
| Role | Disc color |
| --------------------------------- | ---------- |
| Super admin | Amber |
| Union admin (project group admin) | Green |
| Project admin | Rose |
| Basic user | Sky blue |
When you have an uploaded photo, your tier color appears as a thin ring border around the photo. When you are showing initials, the entire disc is filled with the tier color and your initials appear in white.
## Admin: remove a user's profile photo
Super-admins can view and remove any user's current profile photo from the admin user edit page. After removal the user reverts to showing their initials. Admins cannot upload or crop a photo on behalf of a user -- users must do that themselves from their own settings page.
# Analyze import results
Source: https://help.broadstripes.com/docs/data-import-admin/analyze-import-results
Read the Data Imports table, drill into a completed import's statistics, and track down every row that was skipped or errored.
After an import runs, Broadstripes keeps a detailed record of what happened — how many contacts were created or matched, which rows had problems, and exactly what changed. This article covers reviewing those results at a glance and in depth.
**Imports cannot be undone**
If you've come to this page because your import had unexpected negative results, know that there's no way to undo an import once it's been run. However, it's likely we can still help you. Please contact Broadstripes support to talk through your options.
## The Data Imports page
Broadstripes presents every import in your project on the **Data Imports** page:
1. Click the **Project settings** icon in the top-right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Data imports**. (Project admins and basic users with the **Can perform data imports** permission can open this page.)
2. The **Data Imports** tab lists every import in the project, one row per import.
### Core columns
* **#** — a unique number for each import (the import's "short ID"). Click it to open the import's details.
* **Name** — the name you gave the import, or the original filename if you didn't name it.
* **Status** — where the import is in its lifecycle (see [status values](#understanding-import-status) below). While an import is processing, this cell shows a live progress bar with the number of rows processed.
* **Type** — **Manual** (uploaded by a user) or **Automated** (delivered by an [automated import](/api/automated-import-overview)).
### Statistics columns
These columns use icons as headers — hover over an icon to see what it counts. The numbers are clickable:
* **Contacts created** — new contacts this import added.
* **Contacts matched** — existing contacts this import matched (and possibly updated).
* **Contacts created or matched** — the combined total of contacts the import touched.
* **Rows with warnings** — rows that imported but triggered a warning.
* **Skipped (error)** — rows skipped because of a problem (for example, an ambiguous match or an invalid email address).
* **Skipped (no match)** — rows skipped because they didn't match any existing contact (when the import was configured to only update, never create).
* **Rows in the import file** — total data rows in the uploaded file (excluding the header row).
**Click any number** in the created/matched/affected columns to open those exact contacts in search results. Click an error or skip count to jump straight to the row-by-row issue list on the import's detail page.
**About counts:** if contacts are deleted after an import, you may see two numbers — the original count from when the import ran, and (in parentheses) how many of those contacts still exist.
### Timing and audit columns
**Start time**, **End time**, and **Duration** show when the import ran and how long it took. **Scheduled to run**, **Created**, **Created by**, **Updated**, and **Updated by** are hidden by default — click the button at the top right of the table to choose which columns are displayed. You can sort by any column, and filter using the boxes under the column headers.
### Managing imports from this page
* **Stop** — while an import is processing, a stop button appears in its Status cell. Stopping keeps the changes already made; a stopped import can be **restarted** and will resume from where it left off.
* **Delete** — select imports with the checkboxes and click **Delete**. Only imports that haven't run yet (uploaded, previewed, or scheduled) can be deleted; completed and in-process imports cannot.
## Understanding import status
The **Status** column tracks the import lifecycle:
* **New** — created, but no file uploaded yet
* **Uploaded** — file received; mapping in progress
* **Preprocessing** — analyzing the file for the preview
* **Preprocessed** — preview complete, ready to run
* **Queued** / **Scheduled for \[date]** — waiting to run, either immediately or at the scheduled time
* **Processing** — actively importing (with a live progress bar)
* **Indexing values** — finishing up; making imported data searchable
* **Imported** — completed with no errors
* **Imported with errors** — completed, but some rows were skipped or errored
* **Stopped** — stopped by a user; can be restarted
* **Failed** — a critical error stopped the import
The page updates itself while imports are running, so you can monitor progress without reloading.
## In-depth: the import details page
Click an import's **#** or **Name** to open its detail page. For a completed import it shows:
* **The import's settings** — status, timing, and every configuration choice that was made (matching policy, append or replace, employment handling).
* **Data Field Mappings Used** — which spreadsheet column went into which Broadstripes field, and which columns were matched on.
* **Results from preview** — the dry-run numbers from before the import ran.
* **Results from import** — the final statistics, each linked to the actual records:
* **List of inserted contacts** — contacts the import created
* **List of matched contacts** — existing contacts the import matched
* **List of inserted or updated contacts** — everything the import touched
* **Rows with errors** and **Rows skipped** — jump to the row-by-row breakdown
* **Total rows in file**
### Data Import Errors and Skips
At the bottom of the detail page, the **Data Import Errors** and **Data Import Skips** tables list each problem row with its spreadsheet **Row #** and the specific **Issue** — for example, "Multiple records in Broadstripes (2) matched the selected fields in the import row" or an invalid email address. The first 100 rows are shown; the full set is always available via the **Download** button.
**Fix and re-import.** The error/skip **Download** is a CSV containing the original spreadsheet rows plus an `error` column explaining what went wrong with each. Fix the issues in that file, delete the `error` column, and import it — you only re-process the rows that failed.
## Finding imported contacts later
Every import is remembered by search. Use the `import` keyword in the [search language](/docs/search/search-language-basics):
* `import="Import 62"` — all contacts affected by import 62
* `import="Import 62 Added"` — only the contacts it created
* `import="Import 62 Matched"` — only the contacts it matched
This is the same search the clickable statistics numbers run for you.
## Auditing individual changes
To see exactly which fields an import changed on which contacts — old value and new value — use the **Change History Explorer** on the homepage's **Recent Changes** tab. Its **Import #** column identifies the import responsible for every change, and you can filter by an import number (or `manual` for changes people made by hand). See [Change Explorer](/docs/project-settings/change-explorer).
# Changing phone contact info in bulk
Source: https://help.broadstripes.com/docs/data-import-admin/changing-phone-contact-info-in-bulk
Recipe for switching many phone numbers to a different phone type (and setting texting permissions) by downloading contacts and re-importing updated contact info.
On occasion, you will need to change phone numbers from one phone type to a different phone type (e.g., Home phone to cell phone). When you need to switch many phone numbers, changing the phone types (or other phone metadata) one by one could become tedious. There is a more efficient way to change phone types in bulk by downloading contacts and importing updated contact info back into Broadstripes. This can be useful when changing phone types and messaging permissions for texting.
This recipe uses the [round-trip update pattern](/docs/data-import-admin/update-contacts-with-an-import): download, edit, delete the old info, and re-import matching on Broadstripes ID.
Here is an example of how to change phone types (and other metadata) in bulk:
1. Add a Flexible Contact Info column to your layout that includes only "Phones" (not "Cell phones"). This should be the only column in your search layout besides **Contact**.
2. Select the contacts that you want to update.
3. Download the data to a spreadsheet. You can download a CSV or an XLSX. Be sure to use your current working layout and select the **One row per contact** checkbox.
4. Delete the old phone numbers using the **Actions** menu and select **Delete contact info** from the dropdown list. When the **Bulk Delete Contact Info** panel appears, select **Phones**. You can also choose specific phone groups to delete if applicable. Click **Delete**.
5. Edit the downloaded spreadsheet and make the following changes:
* Change the column header from "Personal Phone" to "Personal Cell Phone" (If you are using other types of phone groups like Business Phone, also insert Cell into the column header.)
* Add a column named "Personal cell phone permission" with the text "Opted in" in each row
* Add a column named "Personal cell phone permission reason" with one of the following reasons in each row:
* Signed paper form
* Submitted online form
* Clicked emailed link (or sent an email)
* Sent a text message
* Gave verbal instructions
* Is a bargaining unit member
* Set in external system
* You can delete all other columns except the **Broadstripes ID** column.
6. [Import the new spreadsheet](/docs/data-import-admin/import-a-spreadsheet) into Broadstripes. Check **Match?** on the **Broadstripes ID** column, and be sure that the columns match in the **Define data mappings** section.
Once the data import is complete, your contacts will be updated with a new phone type and messaging permissions.
# Converting custom fields into external system IDs
Source: https://help.broadstripes.com/docs/data-import-admin/converting-custom-fields-to-external-systems
Move unique IDs out of a custom field and into an external system so they can be used for matching during data imports.
External Systems data consist of unique IDs that originate from sources outside the application, such as another database. These unique values are specific to individuals or organizations and can be used for matching when importing data into Broadstripes. Leveraging these unique values as an external system is a more efficient approach than assigning them as custom field values.
It is not currently possible to match on a custom field, though we hope to add that feature in the near future.
This article focuses on extracting values in a Broadstripes custom field and converting them to a new external system ID. Using an example where we have a custom field named "IntelNet Number," we will export the current values into a spreadsheet and then import them into an external system field as follows:
1. Search for all records in your project with a value in the custom field, i.e. IntelNetNumber = any.
2. Create a simple layout with "IntelNet Number" as the only column alongside the "Contact" name field.
3. With the new layout, select all contacts who have an IntelNet Number. Using the Reports dropdown menu, select Spreadsheet (XLSX) or Spreadsheet (CSV).
4. Create an [external system](/docs/project-settings/external-systems-settings) named "IntelNet Number." Make sure to select "Enforce uniqueness" and leave the other checkboxes unchecked.
5. Delete the "IntelNet Number" custom field.
6. In the downloaded spreadsheet from step 3, change the column header (i.e., the first row) for "IntelNet Number" to "IntelNet Number ID" (as Broadstripes auto-maps external system values on import).
7. Save the spreadsheet with the changes.
8. Create a [new data import](/docs/data-import-admin/import-a-spreadsheet) and use the spreadsheet that was just saved.
9. Ensure that the "Broadstripes ID" column and the "IntelNet ID" column are "mapped," while all other columns are "skipped." Check **Match?** on the **Broadstripes ID** column — the import will [match on it](/docs/data-import-admin/update-contacts-with-an-import) to find each existing contact.
10. **Submit** the Import.
After completing the import process, you can utilize the "IntelNet" external system ID for matching purposes in future imports, enhancing data management and accuracy in Broadstripes.
# Data import fields
Source: https://help.broadstripes.com/docs/data-import-admin/data-import-fields
Reference list of every Broadstripes field a spreadsheet column can map to during data import, with the header names that map automatically.
Data import fields reference guide for mapping spreadsheet columns to Broadstripes fields during the import process.
## Available Import Fields
## Important Notes
**Custom Fields**: For dropdown choosers, multiple selection choosers, and sortable lists, you must enable "Allow imports to add options" on the custom field's edit page if you want to import values that don't already exist as options.
**Primary contact info**: You can designate a contact info record or address as primary during import by adding an "Is Primary" column for the relevant type (e.g. "Home Phone Is Primary", "Personal Email Is Primary", "Business Address Is Primary"). When set to true, any existing primary record of the same type is automatically demoted. If no primary is set during import, Broadstripes automatically assigns one.
**Timeline Items**: To create timeline items through import, you need separate columns for Timeline Item Type, Timeline Item Date, Timeline Item Description, and Timeline Contacted by Unique ID.
## Related Articles
* [Import a spreadsheet](/docs/data-import-admin/import-a-spreadsheet) - Step-by-step import process
* [Analyze import results](/docs/data-import-admin/analyze-import-results) - Review and validate your imports
* [Data Import Overview](/docs/data-import-admin/data-import-overview) - General information about data imports
# Data import overview
Source: https://help.broadstripes.com/docs/data-import-admin/data-import-overview
The complete data import journey in Broadstripes, from preparing your spreadsheet to analyzing the results, with links to detailed guides for each step.
Data import brings worker lists into Broadstripes so you can begin organizing, and it updates existing Broadstripes records with new data from employer lists or other union databases (for example, dues and membership systems).
This page maps the whole journey from beginning to end. Each step links to a detailed guide.
**Imports are permanent.** Once an import has run, there is no way to roll it back. You can [preview every import before running it](/docs/data-import-admin/import-a-spreadsheet#preview-the-results), and you can delete an import that hasn't run yet — but after it runs, the changes are in your data. If an import produced unexpected results, contact Broadstripes support to talk through your options.
## Who can import data?
Project **admins** can always run data imports. **Basic users** can run them only if an admin has granted them the **Can perform data imports** permission on their membership. See [User roles and permissions](/docs/start-project/user-roles-and-permissions).
## The import process, step by step
Get your data into a spreadsheet (XLS, XLSX, or CSV), clean it up, and name the column headers so Broadstripes can recognize them. See [Prepare your data for import](/docs/data-import-admin/data-sources) and the [data import fields reference](/docs/data-import-admin/data-import-fields).
Create any custom fields, external systems, and events **before** importing so their spreadsheet columns can be mapped. See [Set up a project](/docs/start-project/set-up-a-project).
Create a new data import, upload your file, and tell Broadstripes which field each spreadsheet column belongs in. See [Import a spreadsheet](/docs/data-import-admin/import-a-spreadsheet).
A first import usually creates new records. Later imports often **match** rows to existing contacts to update them instead of creating duplicates. See [Update existing contacts with an import](/docs/data-import-admin/update-contacts-with-an-import).
Click **Preview** to see exactly what the import will do — how many people and organizations will be created or updated, plus any warnings, errors, and skips — before you commit. When the preview looks right, run the import now or schedule it for later.
Review what happened: counts of contacts created and matched, rows that were skipped, and drill-downs to the affected records. See [Analyze import results](/docs/data-import-admin/analyze-import-results).
## Tips and tricks
These articles help with common data preparation and import tasks:
* [Splitting names into separate columns for import](/docs/data-import-admin/splitting-names-for-import)
* [Changing phone contact info in bulk](/docs/data-import-admin/changing-phone-contact-info-in-bulk)
* [Converting custom fields to external systems](/docs/data-import-admin/converting-custom-fields-to-external-systems)
# Prepare your data for import
Source: https://help.broadstripes.com/docs/data-import-admin/data-sources
Get your worker data into an importable spreadsheet, clean it up, and name the column headers so Broadstripes can map them automatically.
The easiest way to get a lot of worker data into Broadstripes quickly is to import one or more spreadsheets. This article covers preparing that data — your data sources — before you upload anything.
## What kinds of files can be imported?
Broadstripes imports Excel (XLS, XLSX) and comma-separated value (CSV) files. Data from other spreadsheet apps (e.g. Google Sheets) can usually be exported or converted to one of those formats.
## 1. Locate your data
Any organizing data you have (e.g. an excelsior list, BU list, an informal Google Sheet kept by the organizing team, or an existing organizing database) will likely be useful in Broadstripes. The trick is to get that data into spreadsheet form for import.
#### Spreadsheets with data on multiple tabs
If your spreadsheet contains multiple tabs, Broadstripes will only look at the first. If you need to import data from multiple tabs, create separate files with the data for each tab as the first tab in each file.
#### Importing contacts from the cloud
Do you have organizers or supporters with a lot of worker info in their phone's contacts app or on a computer or the cloud? That data can often be exported to a spreadsheet, and then imported to Broadstripes. Just be sure to get the data into one of the accepted formats (XLS, XLSX or CSV).
You can import as many spreadsheets as you want. If you have multiple spreadsheets, in most cases you should import them one at a time rather than trying to merge them prior to import.
It's been our experience that taking the time to merge spreadsheets isn't worth the effort. This is true even with lists containing information about the same people. It's usually easier to "clean up" a single sheet, import it, and then do additional imports that [match on existing records](/docs/data-import-admin/update-contacts-with-an-import) — using a unique identifier, or a combination of fields like name, work location, phone, or email address.
## 2. Review and "clean up" your data
Once you've identified your different sources of organizing data and gotten them into spreadsheet form, review and "clean up" that data to make sure it is formatted the way you want it and contains only the data you'll be using in Broadstripes.
Things to check:
* Names split into separate **First Name** / **Last Name** columns (see [Splitting names for import](/docs/data-import-admin/splitting-names-for-import))
* No formulas left in cells — paste values only
* Consistent values in columns you'll import into dropdown-style custom fields
* Blank rows are harmless — Broadstripes drops fully blank rows automatically
## 3. Name your spreadsheet columns
The first row of your import spreadsheet is the "header row" (selected below). The text in the header row tells the import process where to put the data in that column for all the following rows.
The process of deciding where to put the data in each column is called "mapping." Broadstripes will automatically map a column whose header it recognizes — matching is forgiving about capitalization, extra spaces, and hyphens, and it recognizes both built-in and custom field names. The import is faster and easier when your headers are recognized and mapped automatically, so name your spreadsheet columns with this in mind before uploading.
#### Learn about Broadstripes' built-in data and how to name headers
To understand which data fields are built in to Broadstripes, and how to name your headers so they're recognized, refer to the [data import fields list](/docs/data-import-admin/data-import-fields) and the [built-in data overview](/docs/admin-guides/data-tools/built-in-data). Custom fields are also recognized, as long as they're created in Broadstripes prior to import.
When your spreadsheet(s) are ready, you can start your import.
### Next steps
Go to: [Import a spreadsheet](/docs/data-import-admin/import-a-spreadsheet)
# Import a spreadsheet
Source: https://help.broadstripes.com/docs/data-import-admin/import-a-spreadsheet
Step-by-step walkthrough of the Broadstripes data import wizard, from uploading a file through mapping columns, previewing, and running the import.
This article walks through the import wizard from beginning to end: uploading a file, mapping its columns, choosing configuration options, previewing, and running the import.
**Prerequisites:**
* Your spreadsheet is [prepared for import](/docs/data-import-admin/data-sources) (XLS, XLSX, or CSV, with a header row).
* Your project is [set up to receive the data](/docs/start-project/set-up-a-project) — custom fields, external systems, and events created ahead of time.
* You are a project admin, or a basic user who has been granted the **Can perform data imports** permission.
This walkthrough follows a first import, which creates new records. If you're re-importing data to **update contacts that are already in Broadstripes**, read this page first, then see [Update existing contacts with an import](/docs/data-import-admin/update-contacts-with-an-import) for the matching options.
## Start a new import
1. Click the **Project settings** icon in the top-right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Data imports**. You can start typing to filter the list.
2. This opens the **Data Imports** page, which lists any imports already created in the project.
3. Click the **+ New\...** button.
The import form has three numbered sections that open as you progress: **1. Upload data file**, **2. Define data mappings**, and **3. Preview results**.
## 1. Upload data file
1. If you want, type a **Name** for the import.
**Should I name the import?**
Naming an import is optional, but a description can jog your memory later (for instance, "All Workers with Employments"). Unnamed imports display the name of the import file (for example, "contact\_list\_01.csv").
2. Click the file field to locate your spreadsheet on your computer and upload it to Broadstripes. Accepted formats are XLSX, XLS, and CSV.
**The uploaded file cannot be replaced.**
Once your file is uploaded, the file input is replaced with a download link to the uploaded file. If you uploaded the wrong file, delete this import from the Data Imports page and start a new one.
Broadstripes processes the file for a moment (time depends on file size), then opens the **2. Define data mappings** section.
If a [saved configuration](#configuration-options-reusing-your-work) exists whose columns exactly match your file's headers, Broadstripes automatically applies it — mappings and options come pre-filled from the earlier import.
## 2. Define data mappings
"Mapping" means the data in a spreadsheet column will be transferred into a selected field in Broadstripes. During this step you're teaching Broadstripes which columns in your spreadsheet relate to which Broadstripes fields.
Each spreadsheet column gets a row in the mapping table:
* Broadstripes **automatically maps** any column whose header it recognizes, based on the text in the first row of your spreadsheet. Recognition is forgiving about capitalization, spacing, and hyphens.
* To correct a mapping or map an unrecognized column, open the drop-down in the **...maps to Broadstripes field** column. The fields are grouped (People, Employment, Contact Info, Addresses, Custom Fields, and so on), and you can type in the drop-down's search box to filter — typing "address" shows only address-related fields.
* Columns Broadstripes doesn't recognize stay on **(Skip this field)**. Anything left on **(Skip this field)** is ignored during the import — which is exactly what you want for columns you don't need.
* Click **skip** at the end of a row to clear that column's mapping, or **skip all** in the table header to clear every mapping and start over.
* Click the info icon next to a spreadsheet column name to see the most frequent values in that column, with counts. This is useful for confirming a column contains what you think it contains before you import it.
* The **Match?** checkboxes tell Broadstripes to find existing records instead of always creating new ones. Leave them unchecked for a first import — they're covered in [Update existing contacts with an import](/docs/data-import-admin/update-contacts-with-an-import).
### Things to keep in mind when mapping
* Columns with **employment information** (Employer, Department, Job Title, and so on) need to be mapped to the corresponding fields to create a turf structure. If you map **Department**, you must also map **Employer** — the form will remind you if you don't.
* Two columns can't map to the same Broadstripes field.
* Custom field columns can only be mapped if the custom field already exists in your project. For dropdown-style custom fields, enable **Allow imports to add options** on the field if your spreadsheet contains values that don't exist as options yet (see the [data import fields reference](/docs/data-import-admin/data-import-fields)).
## Configuration: what will this import do?
Below the mapping table, the **Configuration** panel shows what the import will do with your rows. What you see here depends on your mappings — with no **Match?** boxes checked, it confirms that all valid data rows will be added as new records, and offers:
* **Avoid creating duplicates by matching on:** — a safety net for first imports into a project that already has contacts. Broadstripes checks each incoming row against existing records by name (always last name, optionally first name, middle name, and nickname), with optional fuzzy name matching and optional scoping to the same employer and department. Rows that look like an existing person can either update that person or be skipped, using the **These matched records should be** drop-down.
* **Employments** — if you mapped employment columns, the **Automatically create shops and departments and link employments** checkbox appears. Check it to have Broadstripes build the turf structure (shops, departments, sub-departments) from your employment columns and place workers in it during import. It's checked automatically when your file includes employment hierarchy data.
## Configuration options: reusing your work
If you'll re-import files with the same layout in the future (for example, a monthly membership export), you can save everything you just set up — field mappings, match settings, and policies — as a **saved configuration**:
* **Do not save this configuration** — for one-off imports (the default).
* **Create a new configuration** — name the configuration, and optionally tie it to an [external system](/docs/project-settings/external-systems-settings). Available to project admins.
* **Select an existing configuration** — apply a previously saved configuration to this import.
Saved configurations are listed on the **Saved Configurations** tab of the Data Imports page, and Broadstripes automatically applies one when you upload a file whose columns exactly match it.
## Preview the results
1. Click **Preview**. Broadstripes analyzes the file (a progress bar tracks it) and opens the **3. Preview results** section. Nothing is imported yet — the preview is a dry run.
2. The results table shows what **will** happen: data rows in the file, people to be created and updated, organizations to be created and updated, rows missing names, and counts of warnings, errors, and skips.
3. Expand the **Warnings**, **Errors**, or **Skips** rows to see the row number and issue for each affected spreadsheet row.
4. If you checked **Automatically create shops and departments and link employments**, an **Employer structure** tree appears, showing the department hierarchy that will be created. Organizations that already exist in your project are shown in **bold**, so you can tell at a glance what will be newly created. Click any branch to expand or collapse it.
If you change any mapping or configuration option after previewing, the preview is cleared and you'll need to click **Preview** again before you can run the import.
## Run the import
Once the preview looks correct, the run controls appear below the preview results:
1. Under **When should the import run?**, keep **Now**, or choose **Later** and pick a date and time (US Eastern Time) to schedule it.
2. Optionally, have Broadstripes **email you when the import completes** — choose which outcomes should trigger the email (Success, Skipped records, Error records, Import failure) and who receives it.
3. Click **Submit**.
The import runs in the background. Back on the **Data Imports** page, you can watch its status update in real time — a progress bar tracks the rows processed, and you can stop a running import if something looks wrong (changes already made will remain).
**Final check**
Imports are permanent and cannot be undone once they run. Make sure you've reviewed the preview results thoroughly before submitting.
### Next steps
When the import finishes, review what it did: [Analyze import results](/docs/data-import-admin/analyze-import-results)
# Splitting names into separate columns for data import
Source: https://help.broadstripes.com/docs/data-import-admin/splitting-names-for-import
Spreadsheet formulas that split a single full-name column into First Name, Middle Name, and Last Name columns ready for Broadstripes import.
When importing data into Broadstripes, it is essential that your data is in "good shape" and in the correct format.
One common formatting issue is a single name column in your spreadsheet that includes the full name instead of the first name, middle name, and last name in separate columns. This formatting often occurs when data is exported from another system or database. In Broadstripes, the first, middle, and last names must be in separate columns to be imported to the correct data fields in the app.
Separating these columns manually can be tedious. However, a quick and easy way exists to split a single column into multiple columns for a successful data import.
Here's how:
1. In your spreadsheet, create three columns to the right of the column that contains the full name. The headers of these columns will be **First Name**, **Middle Name**, and **Last Name**.
2. In the column named **First Name**, enter the following formula into the first cell below the header:
```
=IF(ISNUMBER(SEARCH(" ",TRIM(B2))), TEXTBEFORE(B2, " "), TRIM(B2))
```
*For this example, we assume cell B2 is the cell that contains the full name.*
This formula will parse the first word in the **Full Name** column into the **First Name** column. Copy the formula down the column by **double-clicking** the small square on the bottom right corner of the cell.
3. Copy all the cells in the column and paste only the values into the same column. You can paste values by right-clicking in the column and selecting **Paste Values (V)** in the **Paste Options** section. This will replace all formulas with the desired values in the **First Name** column. Removing formulas from your spreadsheet is essential for Broadstripes to import the appropriate data.
4. In the **Middle Name** column, enter the following formula to extract the middle name/initial from the **Full Name** column:
```
=IF(LEN(B2)-LEN(SUBSTITUTE(B2," ","")) > 1, TEXTBEFORE(TEXTAFTER(B2, " "), " "), "")
```
*For this example, we assume cell B2 is the cell that contains the full name.*
This formula will parse out the second word/initial in the **Full Name** column into the **Middle Name** column. Copy the formula down the column by **double-clicking** the small square on the bottom right corner of the cell.
5. Copy all the cells in the **Middle Name** column and paste only the values into the same column. You can paste values by right-clicking in the column and selecting **Paste Values (V)** in the **Paste Options** section. This will replace all formulas with the desired values in the **Middle Name** column.
6. In the **Last Name** column, enter the following formula to extract the Last Name from the **Full Name** column:
```
=IF(ISNUMBER(SEARCH(" ", B2)), TRIM(RIGHT(B2,LEN(B2)-(LEN(C2)+IF(ISBLANK(D2), 0, LEN(D2)+1)))), "")
```
*For this example, we assume cell B2 is the cell that contains the full name, C2 contains the First Name and D2 contains the Middle Name.*
This formula will parse the last word(s) in the **Full Name** column into the **Last Name** column. Copy the formula down the column by **double-clicking** the small square on the bottom right corner of the cell.
7. Copy all the cells in the **Last Name** column and paste only the values into the same column. You can paste values by right-clicking in the column and selecting **Paste Values (V)** in the **Paste Options** section. This will replace all formulas with the desired values in the **Last Name** column.
8. You may need to do a bit of manual cleanup of the rows that contain last names that include a suffix or collective last names that are not hyphenated.
9. Keep the Full Name column to reference the original data later. Change the header of this column to "SKIP," so Broadstripes will ignore it during the import process.
You now have a spreadsheet appropriately formatted to import people's names into the correct data fields in Broadstripes.
# Update existing contacts with an import
Source: https://help.broadstripes.com/docs/data-import-admin/update-contacts-with-an-import
Use the Match? column and matching policies to update contacts already in Broadstripes from a spreadsheet, instead of creating duplicates.
A first import creates new records. Every import after that usually needs to recognize the people who are **already in Broadstripes** — so their records get updated rather than duplicated. That's what the **Match?** column in the mapping table is for.
**Prerequisites:**
* You've read [Import a spreadsheet](/docs/data-import-admin/import-a-spreadsheet) — this article picks up in the **2. Define data mappings** step.
* Your spreadsheet contains at least one column that identifies existing contacts (see below).
## How matching works
Check **Match?** next to a mapped column, and Broadstripes will use that column to look up existing records instead of blindly creating new ones. For each data row, Broadstripes searches for a record whose field value equals the row's value (comparison ignores capitalization and surrounding spaces). You can check **Match?** on more than one column — a row matches only if **all** the match fields agree on the same record.
### Which fields can be used for matching?
Not every column can be a match key. Broadstripes allows matching on:
* **Broadstripes ID** — the unique ID Broadstripes assigns to every contact. This is the most reliable match key, and it's included in every spreadsheet you [download from search results](/docs/getting-started/download-a-spreadsheet-list). When you match on Broadstripes ID, it is used exclusively — no other match fields apply.
* **External system IDs** — unique IDs from another database (membership number, employee ID, and so on) stored in an [external system](/docs/project-settings/external-systems-settings). Like Broadstripes IDs, these are exact and dependable.
* **Phones and emails** — any mapped phone or email column.
* **First, middle, and last name**
* **Employer, department, and sub-department** — useful in combination with names to narrow matches to a workplace.
It is not currently possible to match on a custom field. If your unique IDs live in a custom field today, see [Converting custom fields to external systems](/docs/data-import-admin/converting-custom-fields-to-external-systems).
Match on a unique identifier whenever you have one. Matching on names alone is risky — two different "Maria Garcia" rows can collide, and a nickname or typo prevents a match entirely. If you must match on names, combine them with employer fields, or use the duplicate-avoidance options described in [Import a spreadsheet](/docs/data-import-admin/import-a-spreadsheet#configuration-what-will-this-import-do) instead.
If you map an external system ID column but don't check any **Match?** box, Broadstripes automatically matches on that ID column — external IDs exist to identify records, so imports treat them that way.
## Choose what happens to matched rows
As soon as at least one **Match?** box is checked, the **Configuration** panel's **Matched records** section asks: *What should happen to data rows that match?*
* **Use the data to update the records they match** — the usual choice. Two follow-up questions tune the update:
* *What should happen to contact info (phones, emails, addresses) that's different from existing data on the matched record?* Choose **Append new data to existing** (keep what's there, add the new) or **Replace existing data of the same type with new data**. Your project's default comes from the **Importing addresses, phones or emails** setting in [General settings](/docs/project-settings/general-settings).
* *If a matched worker has an existing employment at the same location as an employment in the import data, what should happen?* Choose **Update the existing employment with any new data in the file** or **Create a new, separate employment**. The second option is available only if your project's **Data imports can create multiple employments** setting is on.
* **Skip them, add them to a list of searches, and make available for download** — leave matched records untouched. Skipped rows are counted, searchable, and downloadable after the import, so nothing is silently lost.
## Choose what happens to unmatched rows
The **Un-matched records** section asks the mirror-image question: *What should happen to data rows that don't match?*
* **Use the data to create new records** — add rows that didn't match as new contacts. You can add the duplicate-avoidance name check here as a safety net.
* **Skip them and make the data available for download.** — only update existing contacts, never create. This is the right choice when you're syncing data from another system and don't want strangers added to your project.
## What if a row matches more than one record?
If a row's match fields find **multiple** existing records, Broadstripes can't safely choose between them. The row is recorded as an error ("Multiple records in Broadstripes matched the selected fields in the import row") and no changes are made to any of the candidate records. You'll see these rows in the [import results](/docs/data-import-admin/analyze-import-results), where you can download them, fix the ambiguity, and re-import just those rows.
## A worked example: updating in bulk from a download
The most dependable update workflow is a round trip:
1. Search for the contacts you want to update, and [download them as a spreadsheet](/docs/getting-started/download-a-spreadsheet-list) with the fields you need. The download includes each contact's **Broadstripes ID**.
2. Edit the spreadsheet — change values, add columns — but leave the **Broadstripes ID** column intact.
3. [Import the spreadsheet](/docs/data-import-admin/import-a-spreadsheet). Check **Match?** on the **Broadstripes ID** column, and map only the columns you changed (leave the rest on **(Skip this field)**).
4. Under **Matched records**, choose **Use the data to update the records they match**; under **Un-matched records**, choose **Skip them** — every row in your file came from Broadstripes, so anything unmatched signals a problem.
5. **Preview**, confirm the counts, and **Submit**.
For a complete recipe using this pattern, see [Changing phone contact info in bulk](/docs/data-import-admin/changing-phone-contact-info-in-bulk).
# Add a column to a layout
Source: https://help.broadstripes.com/docs/getting-started/add-a-column-to-a-layout
## Overview
Broadstripes' **layouts** let you customize the contents of the search results panel. Using the layout builder tool, you can choose just the columns of data you want to see, and leave out anything that might get in the way.
This article will step you through the simple task of **adding a new column to an existing layout**. (You can use the same process to add multiple columns if you want.)
Trying to **create a whole new layout** from scratch? You can read all about how to do that in the [create and save a layout](/docs/customize/save-a-layout) article.
## Add a column to an existing layout
1. Start on the **search results panel**. (Learn about running a search in the [Search by name](/docs/getting-started/search-by-name) article.)
2. In the upper-right area above your search results, click the drop-down menu next to the word **Layout** as shown below. Our drop-down menu is labeled "**Card signing**" but yours may look slightly different depending on the name of your layout.
3. From the **Layout drop-down menu,** choose to either:
* **Modify layout...** if you want to change the current layout.
* **Save layout as...** if you want to make changes to a *copy* of the current layout (leaving the current layout untouched).
4. For our example, we'll choose to **modify the layout**.
5. The **layout builder** will open.
### Add a column
3. Once you've added the new column to your layout, you can adjust its position.
* **Drag and drop a column** to change its position in the search results matrix
* The column name at the **top** of the layout builder will be the first column on the **left** when your search results are displayed, while column name at the **bottom** will display as the furthest to the **right**.
### Delete a column
You can **delete unwanted columns** by hovering over the column name and then clicking the minus sign icon that appears.
### Save your changes
Once your layout is modified, you can either choose **apply** the new layout just once, or **save and run it**.
* Click **Apply without saving** to simply apply the layout once to your current search results. This will re-display the results with the new column, but won't permanently save any of the changes you've made to the layout.
* Click **Save changes** to overwrite the saved layout with the modifications you've just made. You'll see the changes each time you choose this layout.
# The flexible contact info column ▶️
Source: https://help.broadstripes.com/docs/getting-started/add-flexible-contact-info-columns-to-a-layout
## Overview
Broadstripes' layouts let you customize the contents of the search results panel. With **flexible contact info columns**, you can decide on the fly which contact info you want displayed and what type of contact data you don't want to see. You can also create multiple flexible contact info columns to hold different information. For instance, you can set up one column to display home and personal phone numbers, and another to show work email addresses.
This video will walk you through the whole process.
Trying to **create a whole new layout** from scratch? You can read about how to do that in the [create and save a layout](/docs/customize/save-a-layout) article.
# Choose how data is displayed (layout)
Source: https://help.broadstripes.com/docs/getting-started/choose-a-layout
### What is a layout?
Together with searches, layouts let you see the contact information you need in the format that works best for your process. While a ***search*** filters the set of contacts displayed by the criteria you choose, a ***layout*** determines which exact information to display about those contacts.
If your project has multiple organizers entering a lot of information, a good layout can make all the difference for productivity and teamwork. A layout essentially shows you a customized view of the data that's most relevant to the work at hand. For instance:
* an **organizing layout** (used for membership drives) might show a worker's name, assessment, employment info, and how to get in touch with them.
* a **committee layout** (used to track your leadership) might show each leader's role, how many workers they organize, and what meetings they've attended this year.
If everyone on your team applies the same saved layout to their work, you'll all be viewing and updating the same set of information — making data entry (and teamwork) a snap!
For this example, let's imagine that we just held a rally, and we want to record who attended. We'll change from our usual "**Organizing view**" layout to the "**Rally Invitees**" layout. With the new layout applied, we can easily check off the attendees, and mark the records of some workers with whom we'd like to do some additional follow-up.
Here's how:
## Choose a layout
1. To choose a new layout, start on the **search results panel**. (Learn about running a search in the [Search by workplace](/docs/getting-started/search-by-workplace) or [Create and save a search](/docs/search/save-and-share-searches) articles.)
2. In the upper-right area above your search results, click the **drop-down menu** next to the word **Layout** as shown below. Our drop-down menu is labeled "**Organizing view**," but yours will probably look different depending on whether you are currently using a saved layout or not.
3. A **drop-down list** will open, giving you choices to **modify, save,** or **build a layout**, or **apply a new layout** by clicking on that **layout's name**.
#### Layouts: custom-made by you and your team
The **layout options** you'll see in your drop-down menu probably look different from ours. Layouts are not built by Broadstripes, but created, saved, and shared by users and project admins to meet your specific needs. What you'll see in your drop-down menu is any layouts you've created, or that other users have shared with you — not a set of pre-made, one-size-fits-all designs. Learn more about creating and saving new layouts in the [Create and save a layout](/docs/customize/save-a-layout) article.
4. We'll apply a new layout by clicking "**Rally Invitees**" from the SHARED LAYOUTS section.
5. Once we choose this layout, the type of information we'll see on screen will change, and we'll instantly have the benefit of a custom view of information that suits our task of recording rally attendees.
6. Using the new layout, we can quickly **update contact records** by checking boxes to show who attended our event, and who needs follow-up.
7. Once we're done updating this information, we can return to our regular "Organizing view" layout by selecting it from the **layout drop-down list** just as we did earlier.
# Download a list as a spreadsheet
Source: https://help.broadstripes.com/docs/getting-started/download-a-spreadsheet-list
## Overview
The Broadstripes **Reports** function allows you to download a list to your local machine as a spreadsheet (.xlsx or .csv) where it will be accessible to you even if you are offline.
Once the information is in a spreadsheet format, you can manipulate and edit it as you see fit. Changes made to the downloaded spreadsheet will have no effect on the data in your Broadstripes project.
Your Broadstripes admin must grant you the proper permission to be able to download report files. See your admin if you need your **project member permission settings** edited to allow downloading CSV / Excel files.
## Download a spreadsheet list
1. To download a list in spreadsheet format, start by **running a search** for the workers on your list. (Learn about running a search in the [Search by workplace](/docs/getting-started/search-by-workplace) or [Create and save a search](/docs/search/save-and-share-searches) articles.)
2. When your search results appear, click **all** to select all the results in the list below.
3. All contacts will be selected (indicated by a **check** next to their name). **Uncheck** any person you want to *exclude* from your list.
4. Once your contacts are selected, click the **Reports** menu and choose the spreadsheet format you want: either **Spreadsheet (XLSX)** or **Spreadsheet (CSV)**.
5. A **Spreadsheet options** window will open.
6. Give the file a **Title** and choose a **Column Layout** to determine which columns of data (fields) will be included in your printed list. (For more information about using layouts, see the [Choose a layout](/docs/getting-started/choose-a-layout) or [Create and save a layout](/docs/customize/save-a-layout) articles.)
7. Choose additional options as needed:
* Checking **One row per contact** will create one spreadsheet row for each contact; if a contact has multiple addresses they will each be listed together in the address column, separated by dashes (the same will happen for multiple employments or any other field that allows multiple values).
* Leaving this **unchecked** will create a spreadsheet where multiple addresses are each on a separate row.
* Checking **One column per contact info type (phone, email, address)** will consolidate data into separate columns for phones, emails, and addresses. This consolidation process will group all phone numbers into a single column, all email addresses into another column, and all physical addresses into a third column. You have the option to specify the separator that will distinguish each item within these columns. Choices include using a group of dashes (**-----**) or a pipe character (**|**). You will also need to choose an option for your metadata (external systems, opt-in/out data, etc):
* To include the metadata in the same columns as the phone number, email, or address, select **Yes, in the same column as the contact info.**
* If you would prefer the metadata in a separate column, select **Yes, in a separate column**.
* To not exclude the metadata, select **No, do not include**.
* Checking **Separate contact info columns by external system** will generate additional columns with contact info that was imported with an external system id.
* Checking **Show Followers or Employees** will create a spreadsheet row for each person (or organization), and additional rows for each of their followers (or employees).
* Turning on the **Schedule for later** switch ("Pick a time or a repeating schedule") opens an additional section in which you can schedule future and recurring report generation and automatic delivery to specified users or user groups.
8. Click **Generate**. This will create the spreadsheet "report" you can download. (If you turned on **Schedule for later**, this button reads **Schedule** instead.)
9. You'll see a message explaining that your spreadsheet report is being created and will download automatically.
10. To download your spreadsheet now, you have two choices:
1. You can **stay on the current page** and wait for the report's **download confirmation** to appear in your browser.
2. You can **leave the current page** and **check in later** to see if the report is ready (larger reports may take some time). To check for the report later, click the Reports link in the navigation panel. That link brings you to the Requested Reports page, where you can select and download the report.
11. Once you've downloaded your spreadsheet list, you can **open** and **edit** it as you would any other .XLSX or .CSV document.
# Find people and workplaces
Source: https://help.broadstripes.com/docs/getting-started/find-people-and-workplaces
Use the Find people and Find workplaces cards on the homepage to pull up a person's record or list everyone at a work location
Much of the work you do in Broadstripes will begin with finding a record -- one specific person, or all the people at a certain work location. The quickest way to do either is right from your homepage.
## The Find cards
On the **Home** tab of your homepage, you'll see the **Find people** and **Find workplaces** cards. (If your project doesn't have workplaces yet, only **Find people** appears.)
## Find people
Click the **Find people** card to expand it. It gives you two ways to search:
* **Search by name** -- type a person's name to pull up their individual record.
* **See everyone at ...** -- type a work location into the **"Which location?"** field to list everyone employed there.
As you type a name, Broadstripes suggests matching people, showing each person's assessment and workplace. Select a suggestion (or press **Enter**) to run the search.
The person's record appears in the **Search Results** panel, where you can click their name to open their complete record.
## Find workplaces
Click the **Find workplaces** card and start typing a work location's name. Select the workplace to run a search for it -- the workplace appears in the **Search Results** panel, where you can click its name to open its record.
The Find cards are the fastest way to look up a record, but they aren't the only way to search Broadstripes. You can [search for a person by name](/docs/getting-started/search-by-name) from the search bar at the top of any page, and the search builder lets you search using a host of additional criteria. Learn about building your own custom search in the [Search builder](/docs/search/search-builder-build-an-advanced-search) article.
# Get driving directions for your list
Source: https://help.broadstripes.com/docs/getting-started/get-driving-directions-for-your-list
1. Start by running a **search** to filter for just the contacts you want to include on your map.
2. For this example, we used the **advanced search** to show us any contacts who live on Chapel Street or Edgewood Avenue, two streets we plan to visit for our campaign. (Learn more about creating custom searches like this in the [Create and save a search](/docs/search/save-and-share-searches) article).
3. When your search results appear, click **all** to select all the results in the list below.
4. All contacts will be selected (indicated by a check next to their name). Uncheck any person you want to *exclude* from your map.
5. Once your contacts are selected, click the **Maps** drop-down list from the toolbar and choose **Driving directions**.
6. Broadstripes will open a new window showing the location of your contacts on a map.
7. You can add your **starting address** in the text box in the upper-left to generate full driving instructions from your current location, then click **update map**. You may also indicate your **ending address** in the text box in the lower-left.
8. Click the **printer-friendly** icon above the map to print the **turn-by-turn directions**, or use the **page down** keyboard command to view them on-screen at the bottom of the page.
# Welcome to Broadstripes!
Source: https://help.broadstripes.com/docs/getting-started/getting-started-overview
This video will walk you through some of the most common tasks for new users including:
* Viewing your homepage
* Searching for a worker or shop by name
* Adding a new worker or shop
* Getting around the Turf Panel and Search Results Panel
* Data entry
* Printing a list
* Viewing workers on a map
* Using the Broadstripes Knowledge base
If you need more help, you can search a topic here in the support center, or [contact us](/docs/contact-us).
While you are here in the Help Center, use the AI assistant to instantly search through the knowledge base, answer questions, point to relevant documentation and troubleshoot your issues.
**To access AI Help:** Press **⌘ I** (Mac) or **Ctrl+I** (Windows) from any page or type your question into the search box at the bottom center of any page on this help site.
### Getting Started articles
Start learning the basics of Broadstripes. These guides will help you get up and running quickly.
# Log in (and reset a password)
Source: https://help.broadstripes.com/docs/getting-started/log-in-and-reset-a-password
## Log in as a Broadstripes user
You'll need to have been invited to Broadstripes and completed registering your account before you can log in to the app for the first time. If you haven't received an invitation to join Broadstripes, ask your administrator to send you one.
Here's how to log in to Broadstripes after your user account has been created and your password is set up:
1. Go to the Broadstripes homepage [http://crm.broadstripes.com](http://crm.broadstripes.com)
Your instance of Broadstripes might have a custom URL (for example [https://crm.yourunion.org](https://crm.yourunion.org)). If that's the case at your organization, just go to that URL instead.
2. Fill in the form with your **email address** and **Broadstripes password**.
3. Check **"Remember me"** if you'd like to save a little time logging in next time.
4. Click **Log in.**
5. Broadstripes will log you in and take you to your Broadstripes homepage.
## Password trouble? Retrieving or changing a password
Although your administrator invited you to Broadstripes, passwords aren't maintained by Broadstripes administrators. You are the only one who knows your password.
If you ever forget your password, you can use the "**Forgot your password?" link** to reset your password and access your account.
On the **"Reset your password" screen**, you will need to enter your email used for login. After you click the **"Send me reset password instructions" button**, an email will be sent to you with a link to reset your password.
# Passwords and Digital Security Tips
Source: https://help.broadstripes.com/docs/getting-started/passwords-and-digital-security-tips
A quick checklist of digital security best practices to protect your organizing work
## Overview
Working on an organizing campaign means you're going to have access to some **mission-critical information**. If it's been a while since you've thought about how to keep your information safe from prying eyes, here's a **quick checklist** that will run you through some of the basics.
We've also included some **overall security best practices** to help keep your devices running clean and minimize your downtime due to bloated apps, malware or viruses.
### Use unique passwords.
**Use a different password for each of your important logins** like email, your online bank account, and Broadstripes.
### Memorize your passwords.
**Don't write logins and passwords on a Post-it note** next to your monitor or under your keyboard – take the time to memorize them.
### Don't stay logged in on a public terminal.
**Always log out** of Broadstripes or other apps if you're done at a shared cubicle or coffee shop computer.
### Use a screen saver lock.
**Screen saver locks, or screen locks, prevent someone from accessing your computer** when you step away by requiring a password to dismiss the screen saver or wake from "sleep" mode. Setting the timeout (the length of idle time before the screen saver takes effect) to 10 minutes or less is a good rule of thumb.
1. Choose **System Settings** from the Apple menu.
2. Click **Lock Screen** in the sidebar on the left.
3. Set the inactive period. Next to **"Start Screen Saver when inactive"** use the pull down menu to choose **"For 10 minutes"** (or a shorter period of time).
4. Lock the screen when inactive. Next to **"Require password after screen saver begins or display is turned off"** use the pull down menu to choose **"Immediately"**.
1. From the **Accounts** screen, choose **Sign-in options**
2. Select **When PC wakes up from sleep** under **Require sign-in**.
3. Set the timeout (sleep) period. Specify a sleep period of 10 minutes or under **System** and **Power & sleep** in Windows Settings.
### Don't do your union work on management's wifi.
**Management policies often reserve the right to search your browsing history** if you've been logged on to their wifi, so only organize when you're on a non-management connection.
### **Where possible, set up two-factor authentication (2FA).**
**Most leading tech companies and many major banks offer 2FA.** In most cases, the second step in authentication involves texting a temporary security code to the cell phone number that is already on file for your account. In the case that someone gets access to your login credentials, 2FA will keep your account safe unless that unauthorized user also has possession of your phone.
### Keep your operating system, software, and apps up to date.
**New vulnerabilities and weaknesses are found every day**, so frequent updates are essential to ensuring your computer or mobile device is protected. You'll be happy to know that Broadstripes updates automatically – just log in and you're running the latest, most secure version – so that's one app you won't need to think about.
### Once you're up to date, stay up to date with automatic updates.
**Enabling automatic updating** helps ensure your device is up-to-date without having to work so hard.
1. Choose **System Settings** from the Apple menu.
2. Click **General** in the sidebar on the left.
3. Click **Software Update**.
4. Next to **"Automatic updates"** click the information icon ("i" within a circle).
5. In the window that opens, **turn on all options**.
6. Click **Done**.
1. From the **Start** screen, open the **Store**.
2. Choose **Settings**.
3. Choose **App updates**.
4. Set "**Automatically update my apps**" to **Yes**.
### Turn on your firewall.
1. Choose **System Settings** from the Apple menu.
2. Click **Network** in the sidebar on the left.
3. Click **Firewall**.
4. **Turn on** the firewall.
5. Click the **Options** button to customize the firewall configuration.
1. Select the **Start** button, and then select **Settings.**
2. Click **Update & Security** > **Windows Security** > **Firewall & network protection**.
3. **Choose a network profile**, and then under **Windows Defender Firewall**, switch the setting to **On**.
### Use full-disk encryption.
**Full-disk encryption protects your computer's data** from being accessed by anyone who does not know the password or decryption key. This is especially reassuring if your computer is ever stolen – the thief will have your computer, but they won't have access to your files.
If you have a Mac with **Apple silicon or an Apple T2 Security Chip**, your data is **automatically encrypted**, but turning on **FileVault** provides an extra layer of security. If you use a Mac that **doesn't have Apple silicon or the T2 chip**, you need to **turn on FileVault to encrypt your data**.
Turn on **FileVault**.
1. Choose **System Settings** from the Apple menu.
2. Click **Privacy & Security** in the sidebar on the left, then scroll down to **FileVault**.
3. Click **Turn On**.
4. You might be asked to enter your password.
5. Choose how to **unlock your disk and reset your login password** if you forget it.
6. **Save your unlock/recovery info in a safe location.** You will need your iCloud login password or a recovery key to access your data. **If you forget both, your data will be lost.**
7. Click **Continue**.
1. Sign in to Windows with an administrator account.
2. Select the **Start** button, and then type "**manage BitLocker**.".
3. Select **Manage BitLocker** from the list of results.
4. Select **Turn on BitLocker**, and then follow the instructions.
### Disable Remote Login connections.
**The 'Remote Login' setting on your device controls whether users can log in to your system from other locations.** If you don't know what this is or have a need to use it, you should disable 'Remote Login'.
1. Choose **System Settings** from the Apple menu.
2. Click **General** in the sidebar on the left.
3. Click **Sharing**.
4. Turn off **Remote Login** and **Remote Management** as well as any additional sharing options you don't want to allow.
1. For **Windows 10**, Type "**remote settings**" in the Cortana search box and select **Allow remote access to your computer**. This action seems counterintuitive, but it opens the Control Panel dialog for Remote System Properties.
2. Check "**Don't Allow Remote Connections to This Computer**."
3. For **earlier versions of Windows**:
1. Go to the **Advanced System Settings** or **System and Security** window.
2. Under the **Remote** tab, check "**Don't Allow Remote Connections to This Computer**" or "**Don't Allow Connections to This Computer.**"
### Audit your browser.
If you're like most people, you probably spend a lot of your computing time on a web browser. Securing your browser just takes a few steps and will help keep you safer on the web.
If your browser does not offer automatic updates, **make sure you're running the latest version of the browser** to take advantage of its most recent security patches.
**Keep on top of the add-ons or plug-ins you've installed.** You don't want anything that is questionable, redundant or unused since these extra programs potentially have access to everything you do in the browser. Try to limit what you keep to just essential, trusted add-ons.
To check your add-ons:
* In **Chrome**, choose **Extensions** or **More tools** then **Extensions** from the browser menu.
* In **Firefox**, from the browser menu, choose **Add-ons** to review your options.
* In **Safari**, Choose **Safari** > **Preferences**, then **Extensions**.
### Periodically review app permissions.
It's worth reviewing the permissions each app is granted every so often. Whether it is on your phone, your Facebook account, or another device, looking into these permissions can improve your system's performance, as well as cover you from a privacy and security perspective. Most apps let you see exactly what they've been granted to do on your system. As you review your apps' permissions, here are some things to consider:
* Nothing on your system should be accessing the **camera** and the **microphone** without good reason (to enable video calls, usually).
* The same goes for apps that access your **contact lists**.
* **Location** is another permission to keep a close eye on.
* While you're reviewing app permissions, you might want to take a second to **uninstall apps you're not using anymore.**
# Print a list
Source: https://help.broadstripes.com/docs/getting-started/print-a-pdf-list
## Overview
With Broadstripes, it's easy to print your organizing information as a list using the reports feature. Here are a few reasons you might want to print a list:
* you can bring your information with you in hard copy to house visits and check-in meetings
* for quick reference or to record information when you don't have a computer
* as a tool for non-Broadstripes users to view and collect information
There are different types of lists that you can choose from: the most flexible is the **Basic List**.
The Basic List is just a printed version of your records using whatever layout you choose for your organizing project. For instance, if your layout includes name, home address, and a checkbox indicating attendance at an upcoming event, that is what your printed list will display.
If you were to take that list on a house visit, you'd use the name and address columns to find your people. If your house visits turned out three additional people, you'd keep track of that by checking their attendance checkboxes on your printed list. Then, after your house visits, you could use the annotated printed list to update your contacts' attendance plans in Broadstripes.
## Print a basic list
1. To print a basic list, start by **running a search** for the workers on your list. (Learn about running a search in the [Search by workplace](/docs/getting-started/search-by-workplace) or [Create and save a search](/docs/search/save-and-share-searches) articles.)
2. When your search results appear, click **all** to select all the results in the list below.
3. All contacts will be selected (indicated by a **check** next to their name). **Uncheck** any person you want to *exclude* from your list.
4. Once your contacts are selected, click the **Reports** menu and choose **Basic List (PDF)**.
5. When the **Report options** window opens, give the file a **Title** and choose a **Column Layout** to determine which columns of data (fields) will be included in your printed list. (For more information about using layouts, see the [Choose a layout](/docs/getting-started/choose-a-layout) or [Create and save a layout](/docs/customize/save-a-layout) articles.)
6. Click **Generate**. This will create a PDF report you can download and print.
7. You'll see a message explaining that your PDF report is being created and will download automatically.
8. To view and print your PDF, you have two choices:
* you can **stay on the current page** and the report will be added to your default download folder.
* you can **leave the current page** and **check in later** to see if the report is ready. To check for the report later, click the **Reports** link in the navigation panel. That link brings you to the **Requested Reports** page where you can download any requested list at any time.
Click the **Reports** link in the navigation panel to open a list of reports.Choose the report you want from the **Requested Reports page.**
9. Once you've downloaded your PDF list using one of these methods, **open** and **print** it just as you would any other PDF document.
# Record your organizing info (data entry)
Source: https://help.broadstripes.com/docs/getting-started/record-your-organizing-info
Learn how to record organizing information like check-offs, assessments, notes, and contact timeline entries in Broadstripes.
## Overview
When you join an organizing project, you'll use Broadstripes to record organizing information as you collect it. You won't need to go to a special data-entry screen — you can update any records you see on-screen at any time.
This article walks you through recording a range of organizing information for contact records that *already exist in Broadstripes:*
* [Check-offs](#record-a-check-off)
* [Assessments](#record-an-assessment)
* [Detailed information about a contact or conversation](#record-a-detailed-conversation)
* [Notes and contact timeline entries](#using-notes-and-contact-timeline-entries)
Entering a *new* person or *new* organization in Broadstripes will be covered in another article.
## Get started - run a search and apply a layout
Recording information is always easiest if you aren't wading through unnecessary pages and fields just to get to the things that are pertinent to your work. That's where searches and layouts come in. Broadstripes' searches and layouts work together to provide a completely customized, spreadsheet-style interface to your organizing data.
A **search** filters the contacts that are displayed by the criteria you choose, while a **layout** determines which data columns are displayed for those contacts.
Most users find it easiest to record info like this:
1. **Run a search** to display just the records you want to work with. You can [search by workplace](/docs/getting-started/search-by-workplace) or, for custom searches, [create and save a search](/docs/search/save-and-share-searches).
2. [**Apply a layout**](/docs/getting-started/choose-a-layout) to display the exact information (contact information, assessments, events, etc.) that you plan to record or update for those records.
Once you have the records you want to work with on-screen, you can start recording your organizing information right away.
## Record a check-off
The simplest type of organizing information that Broadstripes can record is a **check-off**. Check-offs are easy and incredibly versatile for all types of organizing. Some examples of what to do with a check-off:
* Turn out members to an event
* Record whether someone has signed a union card
* Track petition signatures
* Track meeting attendance
* Track one-on-one meetings
Check-offs are often considered a **step** in one of the custom **events** that have been set up for your project, and can be added to any saved layout. If you're joining an existing project, there should already be **events, event steps,** and **layouts** created for your project. If that's not the case, you can talk with your project administrator or learn about creating them in the [Create and save a layout](/docs/customize/save-a-layout) and [Create an event](/docs/customize/create-events-to-track-goals) articles.
## Record an assessment
**Assessments** are an essential tool for keeping track of who has been organized on a push or idea.
Assessments are good for keeping track of opinions rather than more concrete data points. With assessments, this is done using a numeric assessment scale, with 1 indicating strong support, and the highest number in the scale (usually 5) indicating hostility. Assessments are more nuanced than event steps because they require you to assign each worker a numeric ranking along a continuum rather than show their support with a simple yes/no checkbox.
Some examples of how to use assessments include:
* Recording what workers think about a union (for instance, during a card check)
* Keeping track of worker approval of a contract draft
* Tracking worker political opinions during election season
Recording assessments can also be very useful for creating targeted lists of workers:
* If you want to reconfirm all your "lean yeses" for a dues vote, you could create a list of only those workers who are a "2 - Leaning union."
* If you didn't want to waste your time convincing those who strongly oppose, but wanted to talk to everyone else, you could create a list of everyone *except* "5 - Hostile."
### How to record an assessment from search results
Make sure your current layout includes the assessment column (your admin may have already set this up). Then:
1. Locate the worker's row in the search results. In the assessment column, you will see a small colored circle (called a **disc**). If the worker has no assessment, the disc appears as an empty dotted circle.
2. Click the disc to open the assessment dropdown. The dropdown lists every assessment code for your project, each shown with its colored disc and description.
3. Click the assessment code you want to assign. The disc in the row updates immediately to reflect the new code, and a confirmation appears at the bottom of the screen.
**Hover to see assessment history.** If an assessment has been set before, hovering over the disc shows a tooltip with the date and the name of the user who last changed it.
**If a timeline dialog opens instead of saving immediately:** your project administrator has turned on the **Display timeline dialog when the assessment is changed** setting. When this is on, changing an assessment anywhere in the app opens the timeline entry form with that code pre-selected, so you can add a note about the conversation before saving. Fill in any details you want to record, then click **Save** to apply both the assessment change and the timeline entry at once.
## Record a detailed conversation
Sometimes your conversations with workers will produce detailed information about them that you'll want to preserve for future use. Here's how to record that info, even if it's not displayed in your layout.
1. To enter detailed information about a worker, start by clicking on their **name** in the search results to open their record (if their record is not already on-screen, [search for them by name](/docs/getting-started/search-by-name)).
2. When their record opens, click the **Edit** tab.
3. **Scroll down** to the section that holds the type of information you want to update, such as **Contact Details**. Enter the new information and click **Save**.
4. You may need to open additional tabs from the worker's record, depending on the information you're recording:
* For **employment information**, use the **Employment** tab.
* To add a **timeline note** (for instance, to **record details of an email** or **phone conversation**), scroll to the bottom of the **Overview** tab, or use the **Quick view** dialog's **Quick actions** tab (see below).
## Using notes and contact timeline entries
Sometimes the information you get in a detailed conversation won't fit neatly into any built-in or custom field. In that case, it is best to take advantage of Broadstripes' notes functions. There are two different types of free-form notes that you can enter in Broadstripes:
* Notes
* Contact timeline entries
### Notes
The **Notes** function is best used to capture information that is *always relevant* when an organizer talks to a worker, for instance:
* "Wife is a supervisor."
* "Speaks Creole and English fluently, knows some Spanish."
* "Ring bell and go around to back door."
To add a note:
1. Click the contact's **name** in the search results to open their record, then click the **Edit** tab. You can also click the **Quick view icon** () next to the name and select **Edit** from the **Quick actions** tab.
2. **Scroll down** to the **Notes** section at the bottom of the left column. Type your note in the notes text box, then click **Save**.
### Contact timeline entries
Information that is *fleeting* should not be put in Notes. That type of information should go in the **Contact Timeline**. Since contact timeline entries are more likely to get buried as the timeline grows, they are best used for time-sensitive information related to specific visits, meetings, or campaigns.
Examples of timeline entries:
* "Hector talked to about healthcare campaign during a one-on-one, and he said he had mixed feelings."
* "Talked to Alejandro's sister. She said he would be very interested in talking about the union and told me Tuesday is a good day to find him."
* "On vacation until Thursday 4/15, do not knock."
* "Expressed dismay at contract proposal in committee meeting — please follow up one-on-one."
Timeline entries allow you to choose from one of a few entry **types** (including Note, House visit, One-on-one, Meeting, Phone call, etc.)
To create a contact timeline entry, you have two options:
**From the Quick view dialog:**
1. Click the **Quick view icon** () next to the contact's **name** in the search results to open the **Quick view** dialog.
2. Click the **Quick actions** tab, then select **Add timeline item**.
**From the contact's record:**
1. Click the contact's **name** to open their record, then scroll to the **Contact Timeline** section at the bottom of the **Overview** tab.
2. Click the **New timeline item** button.
3. When the **Create contact timeline item form** opens, choose which **Type** of record you want from the drop-down list, then enter the detailed information you're recording in the **Notes** text box. Click the emoji button () at the bottom-left of the Notes field to insert an emoji at the cursor position.
4. Click **Save** to create the timeline entry.
**Your notes are safe from accidental dismissal.** Clicking outside the dialog or pressing Escape will not close it. To discard your entry without saving, click **Cancel** or the **X** button at the top of the dialog.
# Register your account
Source: https://help.broadstripes.com/docs/getting-started/register-your-account
## Welcome to Broadstripes!
Getting started with Broadstripes is simple. It all begins when your Broadstripes administrator creates your account and emails you an invitation to join. You’ll follow the link in that email to set a password and log in to the app. Here’s how:
1. When your user account is created, you’ll receive an email from your Broadstripes administrator with a subject line like **”Jane Organizer has invited you to \[Project Name].”** The email will include a **Login to \[Project Name]** button and will show the date your invitation expires.
2. **Open** the invitation email.
3. Click the **Login to \[Project Name]** button to open the registration form.
4. Clicking the button will open a browser window to a Broadstripes registration form where you’ll **enter your phone number**, choose your new **password** and **specify your time zone**. You must confirm your password by typing it a second time.
Important!
Choose a secure password that’s at least eight characters long, and contains at least one punctuation mark or numeric character. Passwords are case-sensitive.
5. Once you’ve chosen your password and time zone, click Sign up, and your new account will be created. From there, you’ll be logged in, and automatically taken to your Broadstripe’s homepage.
Registration is complete!
# Search for a person
Source: https://help.broadstripes.com/docs/getting-started/search-by-name
How to search for a person by name in Broadstripes using the search bar autocomplete
Much of the work you do with Broadstripes will begin with a search. Broadstripes' powerful search makes it simple to find and work with your people.
## Search by a worker's name
1. Place the cursor in the search box at the top of the screen, just to the right of the Broadstripes logo, and begin typing the name of someone you'd like to find.
2. As soon as you've typed a few characters, Broadstripes will begin suggesting the names of people in the database who match your text. Each suggestion shows the person's name and their workplace.
3. When you see the person you're looking for, use your mouse or the **up-** and **down-arrow keys** to select their name, then press **Enter** to run the search.
4. The person's record will appear in the **Search Results** panel.
5. From the **Search Results** panel, you can click on the person's **name** to open their complete record. You can also click the **Quick view icon** () in the **Quick view** column to open a dialog with their contact info and other key data.
6. The **Quick view** dialog has two tabs:
* The **Info** tab shows the person's Broadstripes ID, phone numbers, email addresses, home address, and organizing information.
* The **Quick actions** tab provides shortcuts for common tasks like adding a timeline item, calling, sending an SMS, or jumping to the person's record.
# Search for people by their workplace
Source: https://help.broadstripes.com/docs/getting-started/search-by-workplace
## Intro
Sometimes you want to [search for a single person](/docs/getting-started/search-by-name) by name; at other times, you may want to see a group of people all at once.
A common case is when you want to see the name of everyone who works in a particular store, company, shop or department. For this example, we'll search for everyone who works at "**Big Shop**." Here's how:
## Search for people by workplace
Build a simple search to find all the workers at a certain workplace (whether it's a store, company, shop or department).
1. Start your search by clicking the **Search builder** button to the right of the search box at the top of the page.
2. A **search builder** panel will appear below the search box.
3. Initially, the panel will offer to search for people by **Name**, but you can easily change that to search by employer (or any other criteria).
4. To search by employer, select "**Employer (in or below)**" from the drop-down list on the left. That choice can be found under the **Department Structure** section of the drop-down list, but you can bring the choice up even quicker by typing "**employer**" into the **Filter box** (as shown below).
5. Leave the **middle drop-down box** as it is, with "**contains the word(s)**" selected. (This drop-down box contains what's called the "**operator**". We'll cover other operator choices in more depth in another article in the knowledge base.)
6. Click the **Search** button.
7. All the workers who have an employment at **Big Shop** will appear in the **Search Results** panel.
8. Congratulations on building a custom search! You can learn about creating more complex searches, including searches that combine multiple rules, in the [Build an advanced search](/docs/search/search-builder-build-an-advanced-search) section of the knowledge base.
# Switch between projects
Source: https://help.broadstripes.com/docs/getting-started/switch-projects
Use the project switcher to move between Broadstripes projects, sort your project list, and open projects in new tabs.
The **project switcher** lets you move between any Broadstripes projects you have access to without leaving the app. It opens as a searchable dialog directly from the top navigation bar.
If you belong to only one project, the project name appears as a plain label in the top navigation bar -- there is no interactive button, and the project switcher does not open.
## Open the project switcher
Click your current project name in the top navigation bar to open the project switcher. The button shows the name of the project you are currently working in (or "Projects" when you are in the admin portal) and a indicator.
You can also open and close the project switcher with a keyboard shortcut: **Cmd-.** on a Mac, or **Ctrl-.** on Windows and Linux.
## Find and switch to a project
When the project switcher opens, your projects appear in a list. Each project displays a colored badge with the project's initials on the left. Your current project always appears at the top of the list, is highlighted with a subtle background, and is marked with a check mark () on the right.
Type any part of a project name to filter the list. The list narrows as you type, scoring results by how well they match what you typed. Press **Enter** or click a project name to switch to it.
If you have more than 100 projects, the switcher shows the first 100 and displays a hint at the bottom: "Showing first 100 of N -- keep typing to narrow." Continue typing to see more specific results.
## Sort your project list
The project switcher has a **Sort alphabetically** toggle at the bottom of the dialog. When the toggle is on, projects are listed in alphabetical order. When it is off, projects are sorted by recency -- the projects you have visited most recently appear first.
Your sort preference is saved to your account, so it persists the next time you open the project switcher or log in.
You can also change this setting from your user account page, in the **Project switching** section, using the **How should the project switcher drop-down be ordered?** menu.
## Open a project in a new tab
Turn on the **Open in new tabs** toggle at the bottom of the project switcher to open each project you select in a new browser tab instead of navigating the current tab. Your current tab stays open on the project you are already working in.
This preference is saved to your account and remembered between sessions.
### Open a single project in a new tab (without changing the toggle)
When the toggle is **off**, hovering over any project row reveals an arrow button at the right edge. Click it to open just that project in a new tab without flipping the toggle -- useful when you want to quickly check one project while keeping your main tab where it is.
### Invert the toggle for a single selection
Holding the modifier key while selecting a project inverts the toggle for that one click only:
* Toggle **off** + **Cmd-click** (Mac) or **Ctrl-click** (Windows/Linux): opens that project in a new tab (foregrounded).
* Toggle **on** + **Cmd-click** / **Ctrl-click**: navigates the current tab to that project instead of opening a new one.
Your saved toggle preference is not changed by either of these shortcuts.
## Project group badges
If you are a super-admin or a member whose projects span multiple project groups, each project in the switcher is tagged with a color-coded badge showing its group name. The same group always appears in the same color, making it easy to tell at a glance which organization a project belongs to.
Projects that have not been assigned to any group display a gray **No group** badge instead.
If all of your projects belong to a single group, no badges are shown.
## Keyboard shortcuts
| Action | Mac | Windows / Linux |
| ---------------------------------- | ---------------------- | ---------------------- |
| Open or close the project switcher | Cmd-. | Ctrl-. |
| Filter the project list | Type in the search box | Type in the search box |
| Switch to a project | Enter or click | Enter or click |
| Close without switching | Escape | Escape |
# Tour your homepage
Source: https://help.broadstripes.com/docs/getting-started/use-the-homepage-tabs
## Homepage overview
Your Broadstripes homepage gives you customized, at-a-glance insight into your project. Open your homepage by either clicking the **Broadstripes logo** at the top left corner of any page, or the **Homepage** link in the left-hand navigational toolbar.
## Your homepage tabs
Once you’re on your homepage, you’ll see your project’s most important information organized across several tabs. The tabs that appear depend on your project configuration and your permissions.
## Home
The **Home** tab is the default starting view for every user and is always the first tab on your homepage. When you navigate to your homepage, you land here.
### Quick action cards
At the top of the Home tab, three expandable action cards give you immediate access to the most common daily tasks:
* **Find people** - Search for a contact by name, or browse everyone at a specific workplace. Click the card to expand it, then type a name or select a workplace from the dropdown.
* **Find workplaces** - Look up a work location by name. (This card appears only when your project has workplaces in view.)
* **Log a conversation** - Record a one-on-one conversation, phone call, or in-person visit with a contact. Click the card to expand it, find the person you spoke with, and fill in the details.
Only one action card can be expanded at a time. Clicking outside the card collapses it. For a walkthrough of the Find cards, see [Find people and workplaces](/docs/getting-started/find-people-and-workplaces).
### Getting started checklist
New users see a **Getting started** checklist on the Home tab that tracks five key milestones: running your first search, viewing a record, opening a Quick View, saving a journal entry, and creating a saved search. Once you complete all five, the checklist transitions to a completion card that you can dismiss.
### Search hub
Below the action cards, a **Search hub** displays your saved searches and quick links so you can jump directly to the tasks you use most.
### Project snapshot
The lower section of the Home tab shows live data about your project and your workplaces:
* **People not reached** - Contacts in your workplaces who have not yet been contacted.
* **Assessments** - A breakdown of how workers in your workplaces are currently assessed.
* **People with no leader** - Workers in your workplaces who have not yet been assigned a leader.
* **Maps** - A shortcut to map views of your saved searches (appears when maps are enabled for your project).
## Quick Links
The **Quick Links** tab is a customizable page where your most frequent searches or reports are just one click away.
This means that with quick links, you have a single point of access for the things you use most. Quick links are also fully customizable, so you can add and remove links from your quick links tab to meet your changing work demands. (Learn more about customizing quick links – including choosing output formats – in the Create quick links article.)
Many users start at the **Quick Links** tab to easily jump to the tasks they do each day, including:
* opening data entry views
* generating PDF lists
* generating aggregated status reports
* running your most frequent searches
### How to use your Quick Links
Here’s how to use quick links to manage common tasks:
1. Click the **homepage** link in the navigational panel.
2. From the homepage, click the **Quick Links** tab.
3. All of your quick links will be displayed on the tab as buttons.
4. Here’s a look at what each of the four **buttons** shown below will do. (**Note:** since quick links are set up by you or your admin to match your specific workflow, the links you see will be different than those shown below.)
5. **Launch a search:** Clicking the button "People I lead", takes us immediately to a search results data view panel where we can view or update records.
Clicking this button will run the search and take you to the search results page.
6. **Download a Status report:** Clicking the button "Card Signing Report" generates a fully-updated status report that we can download as a PDF – all with just the click of a button.
Clicking this button will generate a status report that you can download in a user-specified format.
7. **Generate a quick search:** Clicking the button "Quick search by department" launches a dynamic search that then automatically generates search results in the user-specified format.
Clicking this button opens the search below, and then generates the results in a format that you choose.Search by name or employment and choose the format you want the results in.
8. **Download an Excel report:** Clicking the button "Unassessed people on my turf" generates a spreadsheet report in XLSX format that we can download and manipulate offline with Excel – all with just the click of a button.
## Turf
The **Turf** tab gives you a dashboard of the workplaces in your organizing territory. Each shop or department appears as a row showing key metrics such as worker count, assessment distribution, and any calculated columns your administrator has configured.
### How shops are organized
Shops on the Turf tab are grouped by their assigned leader:
* Your shops (where you are the assigned leader) appear first.
* Shops led by colleagues appear below, under an **Other leaders’ turf** section divider.
* Shops with no assigned leader appear at the bottom, under a **Turf with no leader** section divider.
Within each group, shops are listed alphabetically by name.
### Navigating shop data
Click a shop’s name to open its overview page, which shows the shop’s child departments and detailed worker information. Click the worker count in the **Workers** column to open a list of all workers at that shop.
### Filtering shops
A **Filter shops...** box appears in the toolbar once you have at least one shop on the panel. Type any part of a shop name to narrow the list; the count next to the box updates as you type (for example, "3 of 7"). Click the **X** button to clear the filter.
### Reports
If your project has status reports or spreadsheet template reports configured, buttons appear in the toolbar above the shop list:
* **Status Reports (all shops)** - Click to open a filterable dropdown of all available status reports. Click a report name to download it as a PDF, or use the web or Excel format links if available. Press **Cmd+B** (Mac) or **Ctrl+B** (Windows/Linux) to open this dropdown from anywhere on the tab.
* **Spreadsheet Templates** - Click to open a filterable dropdown of available spreadsheet template reports. Type to filter. Press **Cmd+U** (Mac) or **Ctrl+U** (Windows/Linux) to open.
### Adding workplaces
Click **Add workplaces to view\...** () to open the **Add workplaces to view** dialog. You can also press **Cmd+A** (Mac) or **Ctrl+A** (Windows/Linux) to open it when focus is not in a text field.
Type at least two characters in the **Find workplaces** tab to search for shops and departments by name. Each result shows the shop’s full hierarchical name, its assigned leader (or "Unassigned" if none), and its worker count. Click a result to add it to your queue. You can queue multiple workplaces before confirming. When ready, click **Add N workplaces** or press **Cmd+Return** (Mac) or **Ctrl+Return** (Windows/Linux) to add all queued workplaces to your panel.
### Hiding and removing shops
Each shop row has an action button on the right:
* **Remove** - Shops you added manually show a remove (X) button. Clicking it removes the shop from your panel. You can add it back at any time from the **Add workplaces to view\...** dialog.
* **Hide** - Shops that are part of your assigned turf show a hide button. Hiding a shop removes it from view without changing the leadership assignment.
To restore a hidden shop, open the **Add workplaces to view\...** dialog. If you have hidden shops, a **Hidden** tab appears next to **Find workplaces**. Click **Show** next to a shop to bring it back. The **Add workplaces to view\...** button also shows a count of how many shops are currently hidden.
## Leaders
The **Leaders** tab presents a card-based view of your project's leaders, giving you a quick overview of your leadership structure and the people and organizations each leader is responsible for.
### What appears on the Leaders tab
The **Leaders** tab shows every person in your project who currently leads at least one other person or organization. If your project has leader roles configured, people assigned a leader role also appear (even before they have been given any followers), and the tab defaults to showing only the leaders in your project's top role positions. You can adjust which roles are visible using the **Roles** filter.
### Understanding each leader card
Every leader appears as a card showing:
* **Assessment disc** - A colored circle showing the leader's current assessment code. Hover over it to see the assessment label and who set it. If the leader has not been assessed, a dotted circle with an "Unassessed" tooltip appears instead.
* **Role name** (color-coded label) - The leader's assigned role, or "(No role)" if no role is assigned. Each role gets a distinct color so you can spot role groups at a glance.
* **Leader name** - Click to open the leader's Organizing dialog, where you can view and update their leadership details
* **Quick View** - Click the icon next to the leader's name to open a Quick View popover with their full contact record, including inline name editing
* **People count** - The number of people this leader currently leads. Click the count to open a search for those followers in a new tab (only available when the count is greater than zero).
* **Org count** - The number of organizations this leader currently leads. Click the count to open a search for those followers in a new tab (only available when the count is greater than zero).
* **Employer / primary organization** - Click to open that organization's overview page
* **User badge** - Appears when the leader has an active Broadstripes user account
* **Report icon** - Click to generate and download a PDF leader report for this person
### Filtering and sorting leaders
Use the toolbar above the cards to find the leaders you need:
**Filter:** Use the **Filter by...** dropdown to choose what to search:
* **Workplace** (default) - narrows the list to leaders whose primary workplace name contains your typed text.
* **Leader name** - narrows the list to leaders whose name contains your typed text.
Type in the search box next to the dropdown to apply the filter. The count inside the box updates in real time. Click the **X** button to clear the filter.
**Sort:** Choose from the **Sort by** dropdown:
* **Role** - Groups leaders by their assigned role position (only available when your project has roles configured). Leaders without a role appear last within the sorted list.
* **Last name** - Alphabetical by last name, then first name (default on projects without roles)
* **First name** - Alphabetical by first name, then last name
* **Workplace** - Alphabetical by primary workplace name. Leaders with no workplace always appear at the bottom, regardless of sort direction.
* **People count** - By number of people led, lowest to highest
* **Org count** - By number of organizations led, lowest to highest
Click the **arrow button** next to the Sort dropdown to toggle between ascending and descending order.
**Role sections:** When sorted by **Role**, cards are organized into labeled sections - one per role - with a count badge showing how many leaders hold that role. Switching to any other sort key collapses the sections while keeping each card's role label visible.
### Role filter (projects with leader roles)
If your project has leader roles configured, a **Roles** button appears in the toolbar. Click it to open a dropdown where you can check or uncheck individual roles. A **Has followers, no role** option controls leaders who have not been assigned any role. The badge on the button shows how many roles are currently selected.
* **Check all** - Select every role at once
* **Uncheck all** - Deselect every role at once
* **Reset to default** - Restore the default selection (your project's senior leadership roles), available when the selection has been changed
Your role filter selection is saved per project, so it persists when you navigate away and return.
### Include people with roles but no followers
When role filtering is active, a toggle labeled **Include people with roles but no followers** appears in the toolbar. By default only people who currently lead at least one person or organization are shown. Turn on this toggle to also display people who hold a leader role but have not yet been assigned any followers.
### Working with leaders
**Open the Organizing dialog**
Click a leader's **name** to open the Organizing dialog for that leader. From there you can view and update their leader role assignment and review their follower list and leadership history. Role changes you make in the dialog are reflected on the card immediately without a page reload.
**Edit a leader's contact record**
Click the **Quick View icon** next to a leader's name to open a Quick View popover with their full contact record. You can edit the leader's name and other contact details directly from the popover. Name changes take effect on the card immediately without a page reload.
**View a leader's employer or primary organization**
Click the **employer name** on a card to open that organization's overview page.
**Generate a leader report**
Click the **report icon** on a card to generate and download a detailed PDF report for that leader.
### Empty states
| Situation | What you see |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| No leader roles defined and no leaders assigned | A prompt to create leader roles, with a link to the Leader Roles settings page |
| Leader roles defined but none assigned to anyone | A message listing the defined role names and a link to learn how to assign them |
| Role filter matches no leaders | "No leaders match the selected roles" - check more roles in the Roles filter |
| Filter matches no leaders | 'No leaders match "\[your search]"' - try a different search, switch the Filter by... field, or clear the filter |
## Project Overview
The **Project Overview tab** offers a broad assessment of your project.
Like the Turf tab, it provides quick links to all of your custom reports. It also shows two interactive charts:
* **Assessments Over Time** - A stacked area chart showing how your project's assessment codes have shifted over time, expressed as a percentage of all assessed contacts. Click any code in the legend below the chart to show or hide that series. Hover over any area to see the exact count for the nearest data point.
* **Assessment Snapshot** - A pie chart showing how assessments are currently distributed across your contacts. Hover over a slice to see the code name and contact count.
At the bottom of the page, you can see key statistics about your project -- like the total number of Broadstripes users and how many organizations and people it contains -- as well as personal statistics like the date of your last login.
Like other tabs on your homepage, most of the numbers presented are clickable links that let you drill down to detailed information where you need it.
The **Project Overview** tab is will not be visible if your project has limited visibility enabled.
## Recent Changes
**Recent Changes** tab shows the last 25 contact records (both organizations and people) to be updated across your entire project.
You’ll also see the name of the Broadstripes user who edited the record and the exact time the change was made.
Project admins and basic users (if enabled) have an advanced view of the recent changes tab. The change history viewer will provide an interactive filterable view of changes in your project as far back as the project creation.
### Switching to the older format
As a project admin, you automatically have the Change explorer enabled. If you prefer a less detailed view, you can click on "switch to old format" in the upper right corner of the Recent Changes tab. This will take you to the previous format with 3 fixed columns (Name, Updated By, and Last Updated) that will display the last 25 changes.
# Video Guides Library
Source: https://help.broadstripes.com/docs/getting-started/video-guides
Watch comprehensive video tutorials to learn how to use Broadstripes effectively
## 🚀 Getting Started
### Welcome to Broadstripes!
**Duration:** Comprehensive overview\
**Topics covered:**
* Viewing your homepage
* Searching for workers or shops by name
* Adding new workers or shops
* Navigating the Turf Panel and Search Results Panel
* Data entry basics
* Printing lists
* Viewing workers on maps
***
## 👥 User Management
### Invite a New User to Your Project
**For:** Project Admins\
**Learn how to:**
* Add new users to your project
* Set up roles and permissions
* Send invitation emails
[→ View full article](/docs/start-project/user-and-membership-overview#video-invite-a-new-user)
### Remove Users or Edit Permissions
**For:** Project Admins\
**Learn how to:**
* Edit user roles and permissions
* Remove users from projects
* Manage team access
[→ View full article](/docs/start-project/user-and-membership-overview#video-remove-a-user-or-edit-a-users-role-or-permissions)
***
## 📱 Communications & Messaging
### Text Messaging Overview
**Learn about:**
* SMS messaging fundamentals
* How text messaging works in Broadstripes
* Best practices for bulk messaging
[→ View full article](/docs/communications/text-messaging#video-overview---how-text-messaging-works-in-broadstripes)
### Set Up and Use Text Messaging
**Complete tutorial covering:**
* Setting up text messaging
* Opting in cell phone numbers
* Sending text blasts
* Managing permissions
[→ View full article](/docs/communications/text-messaging#video-how-to-set-up-and-use-text-messaging-in-broadstripes)
### Text Messaging Permissions - Opt In
**Essential for compliance:**
* How to opt in cell phone numbers
* Managing SMS permissions
* Bulk opt-in processes
* Compliance requirements
[→ View full article](/docs/communications/text-messaging-opted-in-permissions)
***
## 🔍 Search & Advanced Features
### Build Custom Searches with Search Builder
**Master advanced searching:**
* Using the search builder tool
* Creating complex searches
* Filtering by multiple criteria
* Finding specific groups (leaders, assessed ones, event attendees)
[→ View full article](/docs/search/search-builder-build-an-advanced-search)
### Add Rule Groups to Your Search
**Advanced search techniques:**
* Creating rule groups (clauses)
* Using AND/OR operators effectively
* Building complex search logic
* Finding leaders at multiple locations
[→ View full article](/docs/search/add-rule-groups-to-your-search)
***
## 🔗 Relationships & Social Groups
### Working with Relationships
**Learn about:**
* Understanding relationships between contacts
* Creating and managing relationships
* Using relationships in your organizing work
### Working with Social Groups
**Learn about:**
* Creating and managing social groups
* Organizing contacts by shared traits
* Using social groups in searches and reports
[→ View full article](/docs/customize/create-social-groups)
***
## 📊 Layouts & Customization
### Flexible Contact Info Columns
**Customize your view:**
* Creating flexible contact info columns
* Customizing search results display
* Setting up multiple contact columns
* Organizing phone numbers and emails
[→ View full article](/docs/getting-started/add-flexible-contact-info-columns-to-a-layout)
***
## 📞 Call Center
### Using the Call Center
**Learn about:**
* Setting up and using the call center
* Making calls through Broadstripes
* Tracking call outcomes
[→ View full article](/docs/communications/making-calls)
# View your people on a map
Source: https://help.broadstripes.com/docs/getting-started/view-your-people-on-a-map
## Get started
With Broadstripes' **Maps** feature, you can easily view any list of people on an interactive map.
1. Start by clicking the **Maps** link on the navigation panel.
2. Clicking this link takes you to Broadstripes' **Maps** page. You'll see the location of every person in your project (who has a good address) pinpointed on the map that appears.
3. For a better look, you can zoom in or out using the **zoom controls** on the left-hand side of the map, or with the **plus** and **minus keys** on your keyboard.
4. The **Maps** page also allows you to work with geographic shapes, whether pre-loaded political districts or hand-cut turf. These shapes can be used for political outreach, planning house visits, and other geographically informed analysis of your people.
## Learn more
You can learn more about maps in the [Maps overview](/docs/maps/maps-overview) and [How maps work](/docs/maps/how-maps-work) articles.
# Basic Lists PDF
Source: https://help.broadstripes.com/docs/lists-reports/basic-lists-pdf
Print your organizing information as a PDF list using the Basic List report, with options for layout, formatting, and scheduling.
## Overview
With Broadstripes, it's easy to use the **Reports** feature to print your organizing information as a **list**. Here are a few reasons you might want to print a list:
* Bring your information with you in hard copy to house visits and check-in meetings
* Quick reference or to record information when you don't have a computer
* A tool for non-Broadstripes users to view and collect information
There are different types of lists that you can choose from, but we'll focus here on the **Basic List**.
The **Basic List** is a printed version of your records using whatever layout you choose for your organizing project. For instance, if your layout includes **name**, **home address**, and a checkbox indicating **attendance** at an upcoming event, that is what your printed list will display. Learn more about working with layouts in the [save a layout](/docs/customize/save-a-layout) article.
## Using a printed list in your workflow
You can use the information displayed on a printed list in the same way you'd use it in the Broadstripes app. For instance, if you take a printed list with you on a house visit, use the informational columns on the list (**name**, **home address**) to find who you're looking for. Once you have talked to people, use the **attendance checkboxes** on the list to manually record information about your conversations.
Later, when you are back at your computer, you can use the notes you took on the printed list to update Broadstripes. Using the same layout in Broadstripes to update this data that you used when you printed your list greatly simplifies your task of data entry.
## Print a basic list
1. Start by **running a search** for the contacts on your list. Learn about running a search in the [search by workplace](/docs/getting-started/search-by-workplace) or [save and share searches](/docs/search/save-and-share-searches) articles.
2. When your search results appear, click **all** in the toolbar to include all the displayed results in your printed list.
3. All contacts will be selected (indicated by a selection count badge like **413 selected**). You can also click **page** to select only the contacts on the current page, or individually uncheck any contact you want to exclude.
4. Click the **Reports** menu and choose **Basic List (PDF)**.
5. The **Report options** dialog opens. Give the report a **Title** and choose a **Column Layout** to determine which columns of data will be included in your printed list. For more information about using layouts, see the [choose a layout](/docs/getting-started/choose-a-layout) or [save a layout](/docs/customize/save-a-layout) articles.
The dialog includes the following options:
| Option | Description |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Title** | The title that appears at the top of your printed list |
| **Column Layout** | Choose a saved layout to determine which columns appear on the list |
| **Orientation** | **Portrait** (lengthwise) or **Landscape** (widthwise) |
| **Paper Size** | Select a paper size — US-Letter (8.5" × 11") is the default, with options for Legal, Ledger, Tabloid, and more |
| **Shrink to fit** | Automatically fits the list to the selected paper size. Recommended in most cases |
| **Large font** | Generates the list in a bigger font. Works best with few columns |
| **Wall Chart Mode** | Formats the list as a wall chart to be hung up in an office. Automatically switches to Landscape orientation |
| **Show Followers or Employees** | Lists everyone that a given person leads or manages. Sub-options let you include **people followers**, **organization followers**, and add **page breaks** to keep each person's followers on the same page |
| **Include Barcode** | Adds a barcode column using an external system ID. Only needed if you are entering data from a canvass using scanners |
| **Schedule** | Optionally schedule the report to be generated at a future time, or set up a recurring schedule |
6. Click **Generate**. Broadstripes will create a PDF report that downloads automatically.
7. You'll see a message that your PDF report is being created. You have two choices:
* **Stay on the current page** and wait for the report's download dialog to appear.
* **Leave the current page** and check in later. Click **Reports** in the sidebar to go to the **Reports** page where you can download any requested report at any time. A badge on the **Reports** link shows how many reports are ready for download.
8. Once you've downloaded your PDF list, **open** and **print** it just as you would any other PDF document.
# Basic lists spreadsheet
Source: https://help.broadstripes.com/docs/lists-reports/basic-lists-spreadsheet
## Intro
When you want to download a list offline, but you need to manipulate it on your computer, the **Reports** function on Broadstripes allows you to download a list as a spreadsheet (.xlsx or .csv). Once the information is in a spreadsheet, you can manipulate and edit it as you see fit.
## Download a spreadsheet list
1. To download a list in spreadsheet format, start by **running a search** for the workers on your list. (Learn about running a search in the [Search articles](/docs/search/search-builder-build-an-advanced-search))
2. When your search results appear, click **all** to include all the displayed results in your spreadsheet list.
3. All contacts will be selected (indicated by a **check** next to their name). **Uncheck** any person you want to *exclude* from your list.
4. Once your contacts are selected, click the **Reports** menu and choose the spreadsheet format you want: either **Spreadsheet (XLSX)** or **Spreadsheet (CSV)**. Note that choosing CSV will not permit you to create multiple sheets within your document, unlike XLSX format.
5. A **Spreadsheet options** window will open.
6. Give the file a **File Name** and choose a **Column Layout** to determine which columns of data (fields) will be included in your printed list. (For more information about using layouts, see the [choose a layout](/docs/getting-started/choose-a-layout) or [save a layout](/docs/customize/save-a-layout) articles.)
7. Choose additional options as needed:
* Checking **One row per contact** will create one spreadsheet row for each contact; if a contact has multiple addresses they will each be listed together in the address column, separated by dashes (the same will happen for multiple employments or any other field that allows multiple values).
* Leaving this **unchecked** will create a spreadsheet where multiple addresses are each on a separate row.
* **Multiple value separator** lets you choose whether those combined values are separated by dashes ("-----") or by a pipe character ("| (pipe character)"). This option is only available when **One row per contact** is checked.
* Checking **One column per contact info type (phone, email, address)** gives each type of contact info its own column. When it is checked, answer **Include the metadata (external system, opt-in/out, etc.)?** by choosing **Yes, in the same column as the contact info**, **Yes, in a separate column**, or **No, do not include**.
* Checking **Separate contact info columns by external system** creates a separate set of contact info columns for each external system.
* Checking **Show Followers or Employees** will create a spreadsheet row for each person (or organization), and additional rows for each of their followers (or employees).
* Turning on the **Schedule for later** switch generates the spreadsheet at a future time or on a recurring schedule instead of right away, and changes the **Generate** button to a **Schedule** button. See [Scheduling reports](/docs/lists-reports/scheduling-reports).
8. Click **Generate**. This will create the spreadsheet "report" you can download.
9. You'll see a message explaining that your spreadsheet report is being created and will download automatically.
10. To download your speadsheet, you have two choices:
1. You can **stay on the current page** and wait for the report's **download dialog** to appear, asking you where you want to save your spreadsheet.
2. You can **leave the current page** and **check in later** to see if the report is ready. To check for the report later, click to the **Reports** link in the navigation panel. That link brings you to the **Requested Reports** page which lists the reports you've requested.
Click the **Reports** link to display a list of reports.
Click the file's name to download it from **Requested Reports**.
11. Once you've downloaded your spreadsheet list, you can **open** and **edit** it just as you would any other .xlsx or .csv document.
# Creating reports for organizing leaders
Source: https://help.broadstripes.com/docs/lists-reports/creating-basic-reports-for-leaders
Creating reports for the organizing leaders in your project is essential for organizing efficiency. You can generate these reports in a couple of different ways, and this article will guide you through the process for each:
### Generate a **basic list**
1. Modify your search layout to include all the data you want to see in this report
2. Search for a list of your leaders in the search box. (e.g. `leads = any`)
3. Select all search results. From the Reports menu, choose the "Basic List (PDF)".
4. When the Report Options pop-up window appears, name your spreadsheet and select the "Show Followers or Employees" option.
* For a list of the people that the organizer leads, select "show people followers"
* For a list of organizations that the organizer leads, select "show organization followers"
* The "page breaks" option ensures that leader groups are separated onto distinct pages, facilitating the easy separation and distribution of the printed report to leaders.
5. Click the generate button, and your report will be ready shortly.
### Generate a **leader report**
1. Modify your search layout to include all the data you want to see in this report
2. Use the search to pull a list of people who have a leader (e.g. leader = any)
3. Select all search results. From the Reports menu, choose the "Leader".
4. When the Report Options pop-up window appears, name your spreadsheet and select your output options. Broadstripes will group the people by Leaders and separate these groups into pages for easy distribution of printed reports.
5. Click the Generate button, and your report will be ready shortly.
# Download attachments as a ZIP file
Source: https://help.broadstripes.com/docs/lists-reports/download-attachments-zip
Bundle contact attachments from your search results into a single ZIP file, with optional filters by file name or upload date.
## Overview
The **Attachments (ZIP)** report lets you download the uploaded files (attachments) for a selected group of contacts in one batch. Broadstripes bundles them into a ZIP archive and makes it available for download from the **Reports** page when it is ready.
Use this report when you want to collect signed authorization cards, photos, or other documents from a set of contacts without clicking through each individual profile.
## Generate an Attachments (ZIP) report
1. Run a [search](/docs/getting-started/search-by-workplace) for the contacts whose attachments you want to download.
2. From the search results page, select the contacts to include:
* Click **all** in the toolbar to include every result in the search.
* Click **page** to include only the contacts visible on the current page.
* Or individually check the box next to specific contacts.
The Attachments (ZIP) report supports up to **1,000 contacts** per download. If you have selected more than 1,000, reduce the selection before proceeding.
3. Click the **Reports** menu and choose **Attachments (ZIP)**.
4. The **Download attachments** dialog opens.
5. Under **Which attachments?**, choose the scope:
* **All attachments** (default): every file attached to the selected contacts is included in the ZIP.
* **Only attachments that match...**: expands a set of filter fields so you can narrow which files are included:
* **File name contains**: enter a word or phrase; only files whose name contains that text are included. The match is case-insensitive and looks for the text anywhere in the file name (for example, entering `card` would match `signed-card.pdf` and `card-front.jpg`).
* **Uploaded from** / **Uploaded to**: restrict the date range for files included. You can set one or both dates; "Uploaded from" sets the earliest upload date and "Uploaded to" sets the latest.
If you choose **Only attachments that match...** you must fill in at least one filter field before the **Prepare download** button becomes active.
6. Under **Create a folder for each contact**, choose how the ZIP is organized:
| Option | ZIP structure |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Checked** (default) | One sub-folder per contact, named with the contact's ID and full name (e.g., `AAB-105 - Maria Garcia/`). All of that contact's files sit inside the folder. |
| **Unchecked** | No sub-folders. Each file is named with the contact's last name, first name, ID, and original filename joined by dashes (e.g., `Garcia-Maria-AAB-105-signed-card.pdf`). |
The dialog shows a live preview of the ZIP structure that updates as you toggle this option or type a file name filter.
7. Click **Prepare download**. The dialog closes, and a notification appears at the bottom of the page while the report is being generated.
8. When the ZIP is ready, download it from the **Reports** page, accessible from the sidebar.
## Tips
* **Multiple file types**: the ZIP includes every attachment type (PDFs, images, documents) that matches your scope and filters.
* **Large selections**: if you are downloading attachments for many contacts, the job may take a minute or two to complete. You can continue working in Broadstripes while you wait.
* **No attachments found**: if none of the selected contacts have attachments that match your filter, the report will complete but the ZIP will be empty. Check your filter values and try again with a broader scope.
# Mailing Labels
Source: https://help.broadstripes.com/docs/lists-reports/mailing-labels
Generate printable PDF mailing labels from search results, formatted for standard Avery label templates.
## Overview
The **Mailing Labels** report generates a printable PDF of contact addresses from your search results, formatted to fit standard Avery label sheet templates. Use this report when you need to send physical mail — postcards, newsletters, flyers, ballot mailings, or contract packets — to a targeted group of contacts in your project.
You print the resulting PDF onto a sheet of pre-cut label stock, peel, and stick.
## When to use it
* **Direct mail campaigns**: Send postcards, leaflets, or fliers to a targeted list of workers or members.
* **Ballot or vote-by-mail packets**: Address envelopes for ratification votes, officer elections, or surveys.
* **Newsletters and member communications**: Bulk-mail to a saved search of active members.
* **House-visit kits**: Pre-print address labels for a turf so organizers can drop materials quickly.
For non-postal lists (digital outreach, on-screen reference, walk lists), use [Basic List (PDF)](/docs/lists-reports/basic-lists-pdf) or [Basic List (Spreadsheet)](/docs/lists-reports/basic-lists-spreadsheet) instead.
## Generate a Mailing Labels report
1. Run a [search](/docs/getting-started/search-by-workplace) for the contacts whose addresses you want to print.
2. From the search results page, select the contacts to include:
* Click **all** in the toolbar to include every result in the search.
* Click **page** to include only the contacts visible on the current page.
* Or individually check the box next to specific contacts.
3. Click the **Reports** menu and choose **Mailing labels**.
4. The **Mailing labels** dialog opens. Configure the report:
* **Label**: Pick the label template that matches the label stock you have on hand. Each option lists the Avery code and the label dimensions — for example, **5160 (2⅝" × 1")** for address labels, 30 per sheet.
* **Start at label**: Enter the position on the sheet where printing should begin. The text below the field tells you how many labels the selected template fits per sheet; set a higher number to skip labels you have already used on a partial sheet.
The report prints each contact's primary address. Contacts with no primary address are skipped and listed on a summary page at the front of the PDF.
5. Click **Generate**. The dialog closes and Broadstripes queues the PDF for download.
6. When the PDF is ready, download it from the **Reports** page in the sidebar.
7. Load your label sheets into your printer, open the PDF, and print at **100% / actual size** — do not scale or shrink to fit, or labels will not align with the sheet.
## Tips
* **Always print one test sheet on plain paper first** and hold it up against a label sheet to confirm alignment before printing on label stock.
* **Match the template to your label stock exactly.** Avery 5160 and Avery 5161, for example, look similar but use different layouts. Printing on the wrong stock wastes labels.
* **Skip records without an address.** If you select 500 contacts and only 480 have a printable address, the report includes only those 480, and the skipped contacts are listed on a summary page at the front of the PDF. To confirm coverage before printing, re-run your search with an address filter: `address=any` finds contacts with any address, and `address=none` finds the contacts with none.
* **Combine with saved searches** so you can re-run the same mailing list later (for example, monthly newsletter recipients) without rebuilding the criteria.
## Related reports
* [Basic List (PDF)](/docs/lists-reports/basic-lists-pdf) — Printable list of records with the columns from your layout.
* [Basic List (Spreadsheet)](/docs/lists-reports/basic-lists-spreadsheet) — Same data as a spreadsheet, useful for mail merge in Word or Google Docs.
* [Scheduling reports](/docs/lists-reports/scheduling-reports) — Automatically regenerate reports on a recurring schedule.
# Scheduling Reports
Source: https://help.broadstripes.com/docs/lists-reports/scheduling-reports
## Overview
Broadstripes enables you to automate report generation either once at a future date or on specified recurring schedules. You can set reports to run daily (including business days only), weekly, or monthly. Moreover, these reports can be automatically emailed to your team members.
This guide will provide step-by-step instructions on scheduling status reports and search results reports in Broadstripes.
## Scheduling a Status report (admins only)
To schedule a status report, you must first navigate to the edit page for the report.
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**). This opens a searchable list of settings.
2. Select **Status report definitions** (listed under **Reports**), or start typing to filter the list. This action will direct you to the page displaying the status report definitions for your project.
3. Find the status report you want to schedule, click the (actions) button in its **Name** column, and select **Schedule**. (If you don't have a report to schedule, you will need to [create one first](/docs/lists-reports/status-reports-overview).)
4. A scheduling dialog will appear, with the options split across two tabs: **One time** and **Recurring**.
* For a one-time report scheduled in the future, stay on the **One time** tab. It reads "Runs once on *date* at *time* in *zone* time." Click any highlighted token in that sentence to choose the date, time, or time zone for report generation. A preview line shows when the report will run, or a warning if the selected time is in the past.
* To set up a recurring report, click the **Recurring** tab. It reads "Runs every *week* on *Monday* at *time* in *zone* time." Click the frequency token to specify how often the report should run: **every day**, **on weekdays**, **every week**, or **every month**. You will also be asked for a **Job name**, which you'll use for reference on the Scheduled Jobs page.
After choosing the frequency, click the remaining tokens to select the specific day(s), time, and time zone for the report to run, as outlined in the table below. A preview line beneath the sentence shows the next scheduled run.
| Frequency | Day option | Time of Day options | Timezone options |
| ----------- | -------------------------------------------------------------------- | --------------------------------------- | --------------------------------------------------- |
| every day | Every Sun, Mon, Tues, Wed, Thu, Fri, and Sat | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
| on weekdays | Every Mon, Tues, Wed, Thu, and Fri | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
| every week | Once a week - Choose every Sun, Mon, Tues, Wed, Thu, Fri, **or** Sat | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
| every month | Once a month, Choose any day from 1st - 31st | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
### Automatically email a scheduled status report
5. Once the generation frequency is set, choose the **Output format** for the generated report: **PDF** or **Spreadsheet (XLSX)**.
6. Optionally, select recipients to receive the report by email. Project admins see two search boxes -- one for individual users and one for user groups. Type a name or email address to filter the list, then click a name to add them. Selected recipients appear as removable chips. Non-admin users see only an **Email the results to myself** checkbox.
7. Save your selections. You can view your scheduled report job by accessing the Scheduled Jobs page in the left navigation panel.
***
## Scheduling a Search results report
Search results reports may be scheduled for one-time generation at a future time or recurring generation. A one-time report uses static search results set during scheduling. Recurring reports are dynamic and fetch search results at the time of report generation.
Search results list reports can also be scheduled to run and be emailed to you and other users. Here's how:
1. Run your desired search and select the contacts you want to download.
2. Go to the Reports dropdown menu. You may schedule a [PDF report](/docs/lists-reports/basic-lists-pdf), [spreadsheet report](/docs/lists-reports/basic-lists-spreadsheet).
3. When you select the type of report you want to generate, a pop-up box will appear with your report options.
4. Turn on the **Schedule for later** switch ("Pick a time or a repeating schedule") at the bottom of the pop-up. Turning on **Schedule for later** makes the scheduling options appear, and the dialog's **Generate** button becomes a **Schedule** button.
5. Choose the desired schedule for generation.
* For a one-time report scheduled in the future, stay on the **One time** tab. It reads "Runs once on *date* at *time* in *zone* time." Click any highlighted token in that sentence to choose the date, time, or time zone for report generation. A preview line shows when the report will run.
* To set up a recurring report, click the **Recurring** tab. Click the frequency token to specify how often the report should run: **every day**, **on weekdays**, **every week**, or **every month**. You will also be asked for a **Job name**, which you'll use for reference on the Scheduled Jobs page. (The **Recurring** tab is available only if you selected **all** of your search results rather than hand-picking contacts.)
After choosing the frequency, click the remaining tokens to select the specific day(s), time, and time zone for the report to run, as outlined in the table below.
| Frequency | Day option | Time of Day options | Timezone options |
| ----------- | -------------------------------------------------------------------- | --------------------------------------- | --------------------------------------------------- |
| every day | Every Sun, Mon, Tues, Wed, Thu, Fri, and Sat | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
| on weekdays | Every Mon, Tues, Wed, Thu, and Fri | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
| every week | Once a week - Choose every Sun, Mon, Tues, Wed, Thu, Fri, **or** Sat | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
| every month | Once a month, Choose any day from 1st - 31st | 12:00 am - 11:45 pm (15 min increments) | Eastern, Central, Mountain, Pacific, Alaska, Hawaii |
### Automatically email a scheduled search results report
5. Optionally, select recipients to receive the report by email. Project admins see two search boxes -- one for individual users and one for user groups. Type a name or email address to filter the list, then click a name to add them. Selected recipients appear as removable chips. Non-admin users see only an "Email the results to myself" checkbox.
6. Click the **Schedule** button to enable your scheduled report.
Reports will be available on the Reports page on the day(s) and time that you selected. You may view all your reports by going to the left navigation panel and selecting Reports.
## Editing a scheduled job
You can change the name, schedule, and (for report jobs) recipients of any scheduled job you created. Project admins can edit any job in the project.
1. Access the Scheduled Jobs link in the left navigation panel.
2. In the row for the job you want to change, click the (actions) button in the Name column.
3. Select **Edit** from the menu. (Edit is grayed out if the job is currently running.)
4. In the dialog that opens, update any of the following:
* **Name** -- the label shown on the Scheduled Jobs page.
* **Schedule** -- each highlighted chip in the schedule sentence is clickable. Click a chip to open a picker with additional options -- for example, clicking the frequency chip lets you choose between every day, on weekdays, every week, or every month. Switch between **One time** and **Recurring** using the tabs at the top. A preview line below the sentence shows the next scheduled run (or a warning if the one-time date is in the past).
* **Recipients** (shown only for report jobs that support email delivery) -- project admins see pickers for individual users and user groups; non-admins see an "Email the results to myself" checkbox.
5. Click **Save** to apply your changes.
### Canceling a scheduled report
To cancel a scheduled report:
1. Access the Scheduled Jobs link located in the left navigation panel.
2. In the row for the job you want to cancel, click the (actions) button in the Name column.
3. Select **Delete** from the menu. A confirmation dialog will appear.
4. Click **Delete** to confirm. The schedule is permanently removed and the report will no longer run.
## Undeliverable recipient addresses
If a recipient's email address becomes undeliverable -- because the address is misspelled, no longer exists, or is being rejected by the mail server -- Broadstripes detects this and warns you on the Scheduled Jobs page.
An amber warning icon appears next to the name of any scheduled report that has one or more undeliverable recipient addresses. The icon's tooltip names the affected address or addresses (for project admins) or describes the problem in general terms (for non-admins).
To see full details and take action, open the job's edit dialog:
1. In the Scheduled Jobs page, click the button in the row for the affected job.
2. Select **Edit**.
3. A warning alert appears inside the dialog listing the undeliverable address or addresses and guidance on what to do.
### Resolving the problem
To stop the bouncing, do one of the following in the edit dialog:
* **Correct the address**: In the **Recipients** section, remove the affected user and re-add them with a corrected email address (after updating the address on their user account).
* **Remove the recipient**: Remove the user from the recipients list entirely so they no longer receive the report by email.
* **Re-enable delivery** (project admins only): If you believe the mailbox issue has been resolved -- for example, the recipient's inbox was full but has been cleared -- click **Re-enable delivery** next to the address. Broadstripes will attempt to deliver to that address again. You can re-enable delivery up to a limited number of times per address.
Group admins can re-enable delivery past the standard retry limit when needed.
### Email notification to admins
When a report recipient's email address first bounces, Broadstripes sends a notification email to the project's admins describing the problem and linking to the Scheduled Jobs page. This gives admins a heads-up even before they notice the warning icon on the page.
# Spreadsheet Template Reports
Source: https://help.broadstripes.com/docs/lists-reports/spreadsheet-template-reports
Create Excel-based report templates that query your Broadstripes database using special formula functions
## 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 project settings menu. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **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](#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. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **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.
### Step 3: Create links
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
### Step 4: Create Additional Links (Optional)
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.
***
## Managing templates and links
### 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
### Editing link text
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
### Removing a link
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. If any of those links have scheduled deliveries, the confirmation will show how many scheduled deliveries will be cancelled.
### 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:
| A | B |
| -------------- | -------------------------------------- |
| 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:
| A | B |
| ---------------------- | --------------------------------------- |
| 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:
```excel theme={null}
=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:
| A | B |
| ----------------- | ---------------------------------------------- |
| 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}` |
### Creating Links with Parameters
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:
| A | B |
| ------------- | ------------------------------------------------------ |
| 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:
| A | B |
| -------------------- | -------------------------------------- |
| Base Location: | `{worksite}` |
| Specific Department: | Warehouse |
| Worker Count: | `?COUNT worksite:%B1% department:%B2%` |
**Excel Formula Syntax for Cell References**
When 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:
| A | B | C |
| -------------- | ----------------------------------------- | ---------------- |
| 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:
| A | B |
| -------------- | ----------------------------------- |
| Shop Stewards: | `?COUNT role:steward` |
| Status: | `=IF(B1>=5,"Adequate","Need More")` |
### Example: Building Complex Queries
Use CONCATENATE to build queries from multiple cells:
| A | B | C |
| ------------- | --------- | -------------------------------------------------- |
| 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**:
| A | B |
| ------------------------------ | ----------------------------------------------------- |
| **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**:
| A | B | C | D |
| ----------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
| **Multi-Worksite Comparison** | | | |
| Metric | Factory A | Factory B | Factory 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**:
| A | B |
| -------------------------- | ----------------------------------------------------- |
| **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**:
| A | B | C | D |
| ------------------------------- | ------------------------------------------- | ------------------------------------------------------- | ---------- |
| **Weekly organizing dashboard** | | | |
| Week ending: | `=TODAY()` | | |
| | | | |
| **Overall progress** | Count | Goal | % of Goal |
| Total workers in database | `?COUNT type=person` | 500 | `=B5/C5` |
| Union cards signed | `?CHECKOFFCOUNT[Card Signed] type=person` | 300 | `=B6/C6` |
| Organizing Committee Members | `?COUNT committee:"Organizing Committee"` | 50 | `=B7/C7` |
| Shop Stewards Identified | `?COUNT role:steward` | 25 | `=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 department** | Workers | Cards 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**:
| A | B |
| ---------------------------------- | -------------------------------------------------------------------------- |
| **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**:
| A | B | C |
| ------------------------------- | -------------------------------------------------------- | - |
| **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**:
* Open **Project settings** (the icon in the upper right corner, or **Ctrl-K** / **⌘K**), choose **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**:
* Open **Project settings** (the icon in the upper right corner, or **Ctrl-K** / **⌘K**), choose **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
### Link management
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:
| A | B |
| ------------- | --------------------------------------------------------------------- |
| 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:
| A | B | C |
| -------------- | --------------------- | ----------------------------------------------- |
| Shop Stewards: | `?COUNT role:steward` | |
| Status: | | `=IF(B1<5,"⚠ NEED MORE STEWARDS","✓ Adequate")` |
### Progress bars
Create visual progress indicators:
| A | B | C | D |
| -------------- | ----------------------------------------- | ------------------ | ------------------- |
| 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
# Status reports
Source: https://help.broadstripes.com/docs/lists-reports/status-reports-overview
## Intro
Now that you've got your project running, the lead organizers on your campaign may start to request summary reports to see the progress that's being made. These reports – which Broadstripes calls "**status reports**" – give a comprehensive, high-level snapshot of where your organizing efforts stand.
**Status reports** commonly roll up data from across your campaign to include all the shops and departments you organize, displaying information like the total number of workers you are organizing, and a summary view of all current assessments by total count or percentage.
Those are just a few examples of what a report might show. Since Broadstripes' **status report** feature is highly customizable, you can quickly create your own reports to capture whatever data that's key to your campaign.
## How to get started
You can create a custom status report by following these steps:
* [Create a status report](#create-a-status-report): Get started by creating your new report, naming it, and filling in some very basic information.
* [Choose columns for a status report](#choose-columns-for-a-status-report): Choose what information the report should display and what shops or departments to include in the data you capture.
* [Add custom styles](#add-custom-styles-to-change-the-look-of-a-report) (optional): If you want to change the fonts or overall look of the report, Broadstripes allows you to do that with CSS. This won't change the content of the report, so you can skip this step if you are satisfied with the style provided.
* [Work with status reports](#working-with-status-reports): When you're done, you'll have a fully-customized report that you can print, download as a pdf, and save in Broadstripes for others to run at any time.
## Create a status report
Here's how to set up a basic status report:
1. Click the gear icon in the upper right corner of any page, then select **Status report definitions** to get started.
2. This opens a page called **Status report definitions**. To generate a new status report, click **+ Define new report**.
3. A form will open where you can choose basic options for your report. You'll need to fill out this section before you can continue on to more advanced modifications.
4. Give your report a **Name** that will make sense to you and your team. You will be able to choose the filename of the printed report separately.
5. Next, give your report a **Header** and **Subheader**. You can either manually type fixed names (which will stay the same no matter the content of the report), or use the provided options for **tokens**.
#### What are "tokens?"
**Tokens** are placeholders that will be replaced with the relevant information at the time that the report is run. For instance, if your report is for a single shop called Grand Hotel and you select the **Shop name** (or **%shop%**) token as your subheader, at run time, the **Shop name** token will be replaced with "Grand Hotel."
6. **Filename** is the name the report is given when the file is downloaded for printing (for instance "**Grand\_Hotel\_Status\_Report\_2018-12-20.pdf**"). To get a file name like this, you can combine multiple tokens by selecting one token then another from the drop-down list (for instance, choose **%shop**, then **%report**, then **%hyphenated-date**).
7. **Grouping** determines the categories your report will display and the order in which they will be displayed. You can choose from **shop then leader**, **leader then shop**, **shop only**, or **Classification report.**
#### Classification reports
A **Classification report** will display departments (Housekeeping, Special Events, etc.) in each shop or workplace in addition to shops and leaders. Classification reports are for large shops, where departments may be the more relevant subdivision for your organizing: for example, a large hotel where the Housekeeping department essentially functions as its own shop.
8. **Paper Size** and **Orientation** give you control over the printing output of your report.
9. Check **show short department names** to show shortened versions of department names on your report. When this box is unchecked, every department name will be prefaced by the shop name, e.g. a header called "Grand Hotel Housekeeping." When it is checked, that header would simply read "Housekeeping."
10. The checkbox called **Show classic event step column headings** gives you a choice between two different column heading formats: "Classic" and "New."
* **Classic** includes a header with an event name above the columns for different event steps.
* **New** displays event steps with no name above them.
“**Classic**” heading format vs. “**New**” heading format.\\
No matter which format you use, you can customize the contents and orientation of every column. If you use the "New" format, you may want to change the name of the event step columns for additional clarity.
11. Click **Save** to create your report and access the next set of report options (choosing columns and organizations).
12. After you save, you will be taken to the **column editor tab**. However, at this point, you can access your report from the **Status report definitions** page at any time. If you want to edit the columns, add organizations, and adjust the formatting later, all you have to do is choose **Edit** from the report's actions menu on the **Status report definitions page**.
## Choose columns for a status report
After you fill in the basic options for your status report, as discussed above, you will be directed to a page with several tabs where you can customize the information your report will display.
The first customization tab is called **Columns** and, as the name suggests, it allows you to customize which columns of data your report displays.
### Add a column
To add a column to your status report, single-click on the column name under **Available Columns**. Columns that you select will show up under the **Selected Columns** heading.
### Available columns
The "Available Columns" choices are organized by category:
* **Built-in columns** reference [built-in data](/docs/admin-guides/data-tools/built-in-data) like name, and contact info.
* **Calculated columns** are not required, and may not have been set up for your project. You can read more about them in the [Calculated columns settings](/docs/project-settings/calculated-columns-settings) article.
* **Leader roles** include the leaders within the bargaining unit or worker group, which are explained in the [Leadership roles](/docs/admin-guides/data-tools/leadership-roles) article.
* **Events** for your project are listed individually along with their steps. You can choose to display as many events and event steps as you need in your report. Learn more about how events work in the [Events](/docs/admin-guides/data-tools/creating-an-event) article.
* The last available column is **Assessments,** (this is sometimes called **Codes**, depending on your project's general settings) which will display any assessment code data collected for people in your project, as discussed in the [Assessment settings](/docs/project-settings/assessment-settings) article.
#### Assessments will affect your filters
If you choose to display the **Assessments** column (sometimes called "**Codes**") in your status report, you *cannot filter your report by assessment code*. That means that 1s, 2s, 3s, 4s, and 5s will show up on every report. If assessment codes are *not* displayed, you *will* be able to filter what's included in the report by assessments – for example, to display just 1s and 2s in a report.
Also, note that a "**Not set**" column will be added to your Assessments code column automatically. "**Not set**" tracks the number of workers who have not been assessed.
### Find columns faster
The **Available Columns** list can get pretty long and overwhelming, so Broadstripes gives you the option to filter columns by keyword using the **filter columns box** at the top of the **Available Columns** list. This helps you find what you're looking for quickly in projects that have a lot of custom fields, calculated columns, and event data logged in Broadstripes.
For instance, if you want to find the "**Addresses**" column, you can type the first few letters – "**Add**" – in the filter box. Broadstripes will filter the results, and the "**Addresses**" column will appear below.
### Rename a column
You can use the **Name** text box to rename any column to display on your report with a different header.
For instance, you could select the "**Cards Signed**" column, and then change the name to display "**Cards Signed as of 7/13**". This can be useful when you want to convey your information more legibly, or emphasize the timeline of your progress.
#### Classic vs. New column headings
When you defined your status report initially, you'll remember that the checkbox called **Show classic event step column headings** gave you a choice between two different column heading formats: "Classic" and "New."
* **Classic** includes a header with an event name above the columns for different event steps.
* **New** displays event steps with no event name above them.
If you chose the "New Style" of report, you may want to rename your event step columns to include the event name, for instance, to change "**Signed**" to "**Card signed**," or "**File**" to "**Card on file**."
### Choose header label orientation
Next, you can also choose whether you want the header label to be oriented as **Vertical** or **Horizontal** text on your report (this will not affect the data on the report, just the header text).
**Vertical** orientation looks like this:
**Horizontal** looks like this:
As you can see, horizontal takes up a lot more space, but makes it much easier to read long headers.
### Display as count or percentage
Last, you can choose to display your column as a **count**, a **percent**, or both. You **must** check at least one of **Display as count** and **Display as percent** to have any of your column data show up in your final report.
Once you are satisfied with your formatting choices, click **Save,** and the column will be added to **Selected Columns** list.
### Reorder your report columns
The **Selected Columns** list is ordered to show you the way in which your columns will appear on the final report (the first column in the list will be laid out the furthest to the left in the report, and the last column in the list will be furthest to the right).
You can **change how columns are ordered** by clicking on the green box of the column you want to move, then dragging and dropping it to a new spot, like so:
To make sure your columns are correctly arranged and oriented, first **click the save button,** then you can use the **Preview buttons** at the top of the page to see how your report will look once printed.
### Save your work
Before you leave the **Columns page**, be sure to save your changes by clicking **Save**. Don't worry – if you forget and try to leave without saving, a popup will remind you to stay and save your work!
## Choose organizations for a status report
Your status report will only include data for the organizations you choose to display. If you don't choose any organizations, none will be displayed, so this is a key step.
To get started, click on to the **Organizations** tab to start choosing which shops and departments to include in your report.
### Navigating Organizations
By default, when you open the organizations tab, you'll see all the organizations in your project in the work area.
However, you can use the **toolbar** at the top of the shop list to make it easier to navigate and select the specific shops and departments you want to include in your report.
Here's a look at what actions are triggered by each button on the toolbar:
> **expand all** lets you see every possible shop and department
>
> **collapse all** allows you to view only the top level shops and departments
>
> **hide/show undisplayed** toggles between showing you all shops or just the shops and departments that will appear in your report (that is, those with the **display checkbox** checked)
>
> **reset to default order** returns the order of the list to its original state (if you have (#drag\_and\_drop) the list to reorder it)
### Choosing organizations
First, it's important to know that organizations will always be displayed hierarchically in the work area. Even if you (#drag\_and\_drop) a shop or department to re-order it, it will move in a way that keeps the hierarchy intact.
Here's how the hierarchy view works: In the example below, the shops named **Basic Hotel,** **Grand Hotel,** and **Luxury Hotel** are at the top level of the hierarchy, with departments nested below them. Departments, such as **Concierge, Heirloom Restaurant,** or **Housekeeping**, can also have sub-departments nested below them, for instance the **2nd Floor** and **3rd Floor** sub-departments under Housekeeping.
****
Now that you understand the way shops, departments, and sub-departments are shown in the work area, here's how to select them to be included in your report:
1. To include a location (i.e. a shop, department, or sub-department) in your report, simply check the organization's corresponding **Display** box on the right side of the page.
2. For **Classification Reports** only, you'll have the option to check the **Breakout Classifications** box. This will display information about job classifications for the corresponding location.
### Which levels to display?
If you're having a hard time choosing which levels of shop structure to display, just remember that **you will often *not* need to display the top level** of your shop structure hierarchy. This is because all workers should be classified not only within a shop, but also within a department, so displaying departments rather than shops will give you a more precise picture of where your workers are.
To simplify the task of **selecting all departments under a shop** to be included in your report, you can click the **"display each child"** link next to a shop name as shown below. This will not include the shop itself, however; you'll need to check it additionally to include it in the report.
****
### See if employees work at a location before displaying it in a report
To make sure you understand where your workers are positioned in the shop structure (for instance, at the **shop**, **department** or **sub-department** level), you **can hover your mouse** over any department or shop and see how many **direct** and **indirect** employees that shop or department contains. This can help you decide what levels of a shop hierarchy in your report.
#### Direct and indirect employees
When a level of your structure has a **direct employee**, that means that the level is the smallest/most specific level of the shop structure under which that employee works.
When a level of your structure has **indirect employees,** it means those employees work at a level somewhere below the selected level of the shop structure. For instance, an employee working on the 2nd Floor of Housekeeping at Grand Hotel would be an indirect employee of both Housekeeping and Grand Hotel.
In the two examples below, the **Grand Hotel** has 0 direct employees, so it's probably not worth displaying. **Housekeeping**, on the other hand, has 118 direct employees, so displaying it in your report is a good idea if you want to capture a complete picture that includes all workers.
### Change your report's sort order
By default, the shops and departments in your report will be displayed alphabetically. Below each department, its sub-departments are also displayed alphabetically. If you'd like to change the order that these appear on your report, just **click and hold on the name** of any department or sub-department, then **drag and drop** it to the desired location.
When you're satisfied with your work, click **Save**.
### Preview your report
Once you've selected and saved the organizations (shops, departments and sub-departments) you want to include in your report, you can **preview the report** to make sure it looks the way you want it to.
1. After saving, **click** **HTML** for an on-screen preview, **PDF** for a preview in PDF, and **XLSX** for a preview in Excel spreadsheet format.
2. Your preview will open in a new tab.
3. If you want to make any changes, just return to the **Organizations tab.**
4. If you are happy with the preview, your status report is complete!
5. To run the report, click the **Report Definitions link** to go back to the main **Report Definitions** page.
6. Then find your report, click the (actions) button in its **Name** column, and choose **Run now**.
7. If you want to change the look of the report (including custom fonts or colors), you can continue to the optional next step of adding custom styles.
## Add custom styles to change the look of a report
If you want to make any custom style changes, you can get started by clicking the last tab, labeled **Style**.
To change the look of the report, Broadstripes allows you to apply custom CSS code by adding it to the code area on this page as shown below.
After adding your custom CSS code, click **Save** and you will see a preview of your report.
If you are not familiar with CSS, it is a widely-used language that allows you to specify a document's style–including layout choices, colors, and fonts. You can learn more about using CSS at [https://www.w3schools.com/css/](https://www.w3schools.com/css/).
## Working with status reports
1. To view status reports, you need to start on the **Status report definitions page**. If you are not already there, click the gear icon in the upper right corner of any page, then select **Status report definitions** to open it.
2\. The **Status report definitions** page provides a list of all your existing saved status reports. It shows you basic information about the reports, and provides an actions menu with the actions you can take, like **running, editing,** or **deleting** a report.
## Status report actions
Once you have status reports set up, here are some options for working with them.
Each row's **Name** column ends with an (actions) button. Click it to open a menu with these options:
> **Run now** – This will re-run any status report with new, updated information. This means you can use the same parameters as the original report with updated progress, instead of going through the entire process of creating a new report.
>
> **Schedule** – This lets you generate the report automatically at a future time or on a recurring schedule. See [Scheduling reports](/docs/lists-reports/scheduling-reports) for details.
>
> **Edit** – This will bring you back to the **Create a status report** page and allow you to change the report options. Move through each of the setup tabs as needed (Columns, Organizations, Style) and save as you go. You can then run the report again to see updated numbers.
>
> **Duplicate** – This will leave the selected report intact, and create a new copy. A dialog called **Duplicate status report** will display, telling you to enter a name for the duplicated report. The default is the original report's name followed by "(duplicate)," but you can change it to anything other than the name of the original report. Click **Duplicate** when you're satisfied with your new report name and the copy will appear in the **Status report definitions** list. To make changes to your copied report, choose **Edit** from its actions menu.
>
> **Delete** – This deletes the report. A **Delete status report?** dialog asks you to confirm before the report is deleted. If the report has any scheduled deliveries, the confirmation will also show how many scheduled deliveries will be cancelled.
Once you've run a report, you can download it as a PDF by clicking the **View as PDF** button at the top of the report.
# How maps work
Source: https://help.broadstripes.com/docs/maps/how-maps-work
View and assess your project's contacts by location on a map.
## View all your people on a map
1. Start by clicking the **Maps** link on the navigation panel.\\
2. Clicking this link takes you to Broadstripes' **Maps** page. By default, you'll see the location of every contact in your project pinpointed on the map that appears.
3. You can change the way contacts are marked by clicking the blue buttons in the left-hand panel: **markers, dots** or **heat**.
4. You can hide all these contacts from appearing on the map by clicking again on the selected marker type (markers, dots, or heat) to **deselect** it.
5. For a better look, you can zoom in or out using the **zoom controls** on the left-hand side of the map, or with the **plus** and **minus keys** on your keyboard.
## View your people with a search
Running a search from the maps page will find a specific group of contacts according to any criteria you choose — then display them on the map.
For this example, we'll use the map to decide where to start a card drive. We'll run a search to find where the highest density of unsigned cards is, and target that area first.
1. We'll start by running a recent search for everyone in our project who hasn't yet signed a card. (Learn more about creating custom searches like this in the [Search](/docs/search/search-builder-build-an-advanced-search/) articles).
2. After running our "unsigned card" search, the map now shows an additional group of contacts, indicated by **purple dots**. By default, each search is given its own color, and the results are layered over what was already displayed on the map (unless you choose to hide a group of contacts, as explained above).
3. If we want to see just the contacts in the "unsigned card" search, we can hide the other contacts (explained above) or **remove** them from the map by clicking the icon.
4. Once you are seeing only the contacts you need, clicking **markers** can be especially useful for seeing the highest number of contacts in an area at a glance.
5. After deciding where to start my card drive, I can use Broadstripes' **driving directions** feature to help me get house-by-house directions for my visits. Read the [get driving directions for your list](/docs/getting-started/get-driving-directions-for-your-list/) article for more help.
## View people using shapes and shape groups
Another useful way to see a group of contacts by their location is using the **shapes** feature. A shape is an area of the map that collects groups of people inside saved, user-defined boundaries.
1. Start by clicking the **Shape Groups** drop-down menu in the upper left-hand corner of the map.
2\. Choose the shape group you want displayed on the map by **checking it**.
3. The map will instantly display all the shapes in the selected shape group.
4. Each shape is defined by an outline and a unique color. To get detailed information about the people located inside a shape, just hover over the map and click anywhere in the shape.
5. You can learn more about shapes in the [working with shapes](/docs/maps/working-with-shapes/) article.
# Maps overview
Source: https://help.broadstripes.com/docs/maps/maps-overview
When you collect address information about a person in Broadstripes, the data can be used for searches or printed on reports. Those records also provide Broadstripes with all the information it needs to drive its **maps feature** – a powerful visual tool that lets you see each of your project's contacts pinpointed by location on a map.
Broadstripes maps allow you to view groups of people filtered in a range of ways:
* according to search criteria
* within a user-defined boundary (called a "**shape**")
* by simply zooming in on any region of the map
* you can even combine these features – for instance, you can zoom in on a certain voting district that you're targeting for legislative change, then run a search for contacts with supportive assessments to see how many supporters you have there.
Learn more about maps:
* [how maps work](/docs/maps/how-maps-work/) – see your people and learn about getting around the main maps features
* [working with shapes](/docs/maps/working-with-shapes/) – learn how to define and view areas of the map for analysis or to cut turf (including how to [#make edit shapes](/docs/maps/working-with-shapes#make-edit-shapes) and [#make edit shapes](/docs/maps/working-with-shapes#make-edit-shapes))
* [get driving directions for your list](/docs/getting-started/get-driving-directions-for-your-list) – let Broadstripes generate your house visit lists with street maps and simple turn-by-turn instructions
# Uploading Shape Files
Source: https://help.broadstripes.com/docs/maps/uploading-shape-files
Shapefiles are predefined geographic shapes that delineate key areas within a specified region. They are valuable tools for identifying geographic entities such as legislative boundaries, districts, and neighborhoods. Utilizing shapefiles in projects can provide essential geographical context. These files can be easily imported into Broadstripesas visual aids.
To acquire shapefiles, one can typically download them in ZIP format from a state government's website. Alternatively, a simple Google search for a specific shapefile can lead to resources for obtaining the desired files. In this article, we will explore the process of uploading a shapefile into a project directly from a zip file.
Once you've obtained the shapefile in ZIP format, follow these steps:
1. Click the **gear icon** (tooltip **Project settings**) in the upper right corner of the screen — or press **Cmd+K** (Mac) or **Ctrl+K** (Windows/Linux) — to open the searchable Settings dialog, and choose **All project settings** at the bottom of the list. (You can also type "shape" in the dialog's search box to jump straight to the item.) When the **Project settings** page opens, click **Upload shape file** under the **Maps and shapes** heading in the right-hand column.
2. In the **Name** field, type a name for the "shape group" that will be created to hold these shapes. The best names are clear and concise and contain few or no spaces, as they will become search terms. In this case, we will use "Senate".
3. Click the **Choose file** button, and locate and select the ZIP file you downloaded on your computer.
4. Once the file has been uploaded, choose a **.SHP** file from the **Internal SHP file** dropdown menu. **Note:** often, there will be only one .SHP file in a ZIP. If there is more than one, you will have to try to identify the one you want. The name should offer some hints. If one filename suggests that it contains "lines" and another, "polygons," you should choose polygons. If you choose incorrectly, you can cancel and restart the process.
5. Once the file has been processed, you should see the shapes represented on a map on the right side of the page and a grid presenting the "metadata" contained in the file for each shape. Now, you need to design the "naming pattern" for your shapes. Here are some suggestions about how to do that:
* Look at the data in the grid and determine which columns should be included in each shape's name.
* If you're creating political district shapes, you may be able to include both the district number and the name of the current elected official in the shape name.
* Look carefully at **all** the data — sometimes numbered district files also include a "GID" (global identifier) that is different than the district number. It's easy to confuse the two and create shapes that are numbered incorrectly. Also, sometimes, a shapefile may contain many columns of metadata. Be sure to scroll horizontally to make sure you see all columns.
* To include the data from a column in the naming pattern, click on the or icon in the header of that column.
The icon will include "leading zeros" in front of a numeric value (e.g. the district number), which will allow the shapes to alphabetize properly.
The icon simply includes the text from the column without making any changes.
* We recommend avoiding including the "type" of the shape (e.g., "ward," "district," "county") in its naming pattern.
It's repetitive and unnecessarily complicates searching for the shape without providing additional information.
* As you change the naming pattern, the "shape name" column will be updated to show you the way that pattern will determine the name for each shape.
Examining this is very useful for avoiding mistakes.
* **Don't worry**— if you make a mistake, you can delete the shape group and start again.
6. You may also choose to exclude certain shapes from the upload. Uncheck the shapes that you do not need in the **include** column.
7. If you are happy with the preview and shape names, Click **Save** at the bottom of the left-hand panel. It may take a few minutes for your shapes to be generated and for all records to be correctly indexed.
If you attempt to search by shape within 10-15 minutes after saving the shape group, the results may not be entirely accurate. Therefore, we advise to give it a little time before conducting searches.
# Using Turf Groups
Source: https://help.broadstripes.com/docs/maps/using-turf-groups
## What are Turf Groups?
**Turf Groups** are collections of geographic territories (called **Turf Lists**) that divide contacts into manageable, geographically-clustered areas. Each turf group contains multiple numbered turf lists, with each list containing contacts that are geographically close to each other.
**Key concepts**
* **Turf Group**: A named collection of related territories (e.g., "Spring 2024 Canvass", "Phone Bank Teams")
* **Turf List**: An individual territory within a turf group, containing a specific set of contacts (e.g., "Team 01", "Team 02")
* **Target Turf Size**: The desired number of contacts per territory
* **Geographic Clustering**: Contacts are grouped based on their physical location to minimize travel distance
## Prerequisites
### Feature requirements
The Turf Groups feature must be enabled for your project. Contact Broadstripes support if you need this feature enabled.
### Permissions
* **Create turf groups**: Project administrators only
* **View/edit turf groups**: Users with turf group editing permissions can view turf groups and edit turf list properties
### Data requirements
* Contacts must have valid geocoded addresses (latitude/longitude coordinates)
* Only contacts with location data can be included in turf groups
## Accessing turf groups
1. Navigate to **Maps** (Shape Builder) from the main navigation
2. Look for the **Turf Groups** section in the left panel
3. This section appears below the "Contacts" search area and above "Shape Groups"
*The Turf Groups section in the left panel showing turf groups and their turf lists*
## Creating turf groups
**Step 1: Search for contacts**
1. On the Maps page, use the search box at the top to find contacts
2. Enter your search criteria (e.g., `type:person memberstatus:"Active"`)
3. Click **Add search** or press Enter
4. Your search results will appear as points on the map
Only contacts with valid geocoded addresses will be included in turf groups.
**Step 2: Open the create turf group dialog**
1. After adding a search, locate the search result box in the left panel
2. Find the clustering icon button () next to the contacts/locations count
3. Click the clustering icon to open the "Make a turf group" dialog
*The turf group creation dialog with configuration options*
**Step 3: Configure turf group settings**
You'll need to provide three key pieces of information:
**Turf Group Name**
* A descriptive name for the entire collection of territories
* Example: "Summer 2024 Canvass", "Phone Bank Campaign"
* Must be unique within your project
**Turf List Prefix**
* A short prefix that will be used to name individual territories
* The system automatically appends numbers (01, 02, 03, etc.)
* Example: If you enter "Team", territories will be named "Team 01", "Team 02", etc.
* Must not conflict with existing list names
**Target Turf Size**
* Use the slider to set the desired number of contacts per territory
* The preview area shows how many turf lists will be created
* Must be greater than 0
**Example configuration**:
```
Turf Group Name: Spring 2024 Field Campaign
Turf List Prefix: Field Team
Target Turf Size: 50
```
If you have 250 contacts in your search, this will create:
* A turf group named "Spring 2024 Field Campaign"
* 5 turf lists: "Field Team 01", "Field Team 02", "Field Team 03", "Field Team 04", "Field Team 05"
* Each list will contain approximately 50 geographically-clustered contacts
**Step 4: Create the turf group**
1. Review the preview message showing how lists will be distributed
2. Click **Create**
3. The system will process your request in the background
> **Processing Time:** Turf group creation happens in the background. It may take several minutes depending on the number of contacts. The new turf group will appear in the Turf Groups panel when complete.
**How clustering works**
The system uses a geographic clustering algorithm to create balanced territories:
1. **Location-Based**: Contacts are grouped based on their geocoded addresses (latitude/longitude)
2. **Equal Sizing**: The algorithm attempts to create territories with similar numbers of contacts
3. **Geographic Proximity**: Contacts within each territory are geographically close to minimize travel
4. **Automatic Calculation**: The number of territories is calculated automatically based on total contacts divided by target turf size
## Viewing turf groups
1. On the Maps page, turf groups appear in the **Turf Groups** section of the left panel
2. Each turf group shows as a collapsible panel with a chevron icon
3. Click the **turf group name** (or chevron) to expand and reveal the turf lists within
**Turf group controls**
Each turf group has a toolbar with three buttons:
| Button | Icon | Function |
| ----------------------- | ----------------------------------------- | -------------------------------------------------------------- |
| **Edit** | | Change the turf group name or delete the entire group |
| **Toggle All Outlines** | | Show/hide geographic outlines for all turf lists in this group |
| **Toggle All Markers** | | Show/hide clickable markers for all turf lists in this group |
### Viewing turf lists
When you expand a turf group, each turf list displays:
* **Color Indicator**: A colored bar identifying this turf list on the map
* **Contact Count**: Number of contacts in this territory
* **Name**: The turf list name (e.g., "Team 01")
* **Toggle Buttons**: Outline and marker toggle buttons
*Each turf list has toggle buttons for outline (polygon icon) and markers (circle icon)*
### Displaying turf lists on the map
To visualize a turf list on the map, use the toggle buttons next to each turf list:
| Button | Icon | What It Does |
| ------------------ | ----------------------------------------- | ----------------------------------------------------------------- |
| **Toggle Outline** | | Displays a geographic boundary polygon showing the territory area |
| **Toggle Markers** | | Displays clickable markers for each contact in the territory |
**To show a turf list:**
1. Expand the turf group to see its turf lists
2. Click the **outline button** (polygon icon) to show the geographic boundary
3. Click the **markers button** (circle icon) to show individual contact markers
**To show all turf lists in a group:**
1. Use the **Toggle All Outlines** or **Toggle All Markers** buttons in the turf group toolbar
2. The map will zoom to fit all displayed territories
Active toggle buttons appear highlighted. Click again to hide the outline or markers.
### Interacting with turf list outlines
When you click on a turf list **outline on the map**, a popup appears with:
*Popup displayed when clicking a turf list outline on the map*
* **Turf list name** and the turf group it belongs to
* **Contact count** for this territory
* **Search results** link: Opens a new tab showing all contacts in this turf list
* **Driving directions** link: Opens the routing page for contacts in this turf list
* **Edit** button: Modify the turf list name or move it to a different turf group
* **Cancel** button: Close the popup
### Editing turf lists
To edit a turf list:
1. Click on the turf list outline on the map
2. Click the **Edit** button in the popup
3. You can change:
* **Name**: The turf list name
* **Turf group**: Move the turf list to a different turf group
4. Save your changes
### Editing turf groups
To edit a turf group:
1. Click the **Edit** button (pencil icon) in the turf group toolbar
2. You can change the turf group name
3. You can also delete the entire turf group (this removes all turf lists within it)
## Using turf lists for searches
Turf lists integrate with the search system. You can search for contacts in a specific turf list using:
```
turflist="Team 01"
```
This is useful for:
* Creating reports for specific territories
* Assigning work to team members
* Tracking progress by territory
## Best practices
**Naming conventions**
* **Group Names**: Use descriptive names that include timeframe or campaign
* Good: "Fall 2024 GOTV", "Q1 2025 Membership Drive"
* Avoid: "Test", "Group 1"
* **List Prefixes**: Keep prefixes short and meaningful
* Good: "Team", "Zone", "District"
* Avoid: "A Very Long Prefix That Makes Names Hard to Read"
**Target turf sizes**
Consider these factors when choosing a target turf size:
* **Outreach Method**: Door-to-door canvassing may need smaller territories (25-50)
* **Geography**: Urban areas can support larger territories due to density
* **Timeline**: Longer campaigns can handle larger territories
* **Team Capacity**: Match territory size to your team's capacity
**Recommended sizes**:
| Activity | Recommended Size |
| --------------- | ---------------- |
| Door Knocking | 25-50 contacts |
| Phone Banking | 50-100 contacts |
| Mail/Literature | 100-200 contacts |
**Geographic considerations**
* **Urban vs. Rural**: Rural areas may need smaller territories due to travel distance
* **Natural Boundaries**: Consider that the algorithm clusters by proximity, not by political or neighborhood boundaries
* **Transportation**: Account for driving distances when setting territory sizes
**Planning ahead**
1. **Test First**: Create a small test turf group to verify your settings
2. **Review the Map**: Check the geographic distribution after creation
3. **Clean Data**: Ensure contact addresses are accurate before clustering
4. **Coordinate with Team**: Discuss territory sizes with your field team
## Reassigning Contacts Between Turf Lists
After turf groups are created, you may need to move individual contacts from one turf list to another within the same turf group. This can be done directly from the map popup.
**Prerequisites**
* The contact must already be assigned to a turf list
* You can only reassign contacts between turf lists within the same turf group
**How to Reassign a Contact**
1. **Display the turf list markers** by clicking the markers button (circle icon) next to the turf list in the left panel
2. **Click on a contact marker** on the map to open the contact popup
3. **Select the Turf Lists tab** in the popup (if not already selected)
4. **Locate the turf group** in the table. You'll see:
* The turf group name in the left column
* A dropdown showing the current turf list assignment in the right column
5. **Select a new turf list** from the dropdown menu
* The dropdown shows all available turf lists within that turf group
6. **The popup closes automatically** and a message appears: "Reassigning turf list..."
7. **Confirmation appears** when complete: "Contact reassigned."
**Example**
If a contact is currently in "Team 03" and you want to move them to "Team 05":
1. Click the contact's marker on the map
2. In the popup, find the turf group (e.g., "Spring 2024 Field Campaign")
3. The dropdown shows "Team 03" as the current assignment
4. Select "Team 05" from the dropdown
5. The contact is now assigned to "Team 05"
* **Immediate effect**: The reassignment takes effect immediately
* **One group at a time**: If a contact belongs to multiple turf groups, each group has its own dropdown row
* **Map updates**: The map will refresh to reflect the new assignment
**When to Reassign Contacts**
Common reasons to reassign contacts:
* **Balancing workloads**: Move contacts between territories to even out team assignments
* **Geographic adjustments**: Reassign contacts that are easier to reach from a different territory
* **Boundary corrections**: Fix contacts that were assigned to a non-optimal territory by the clustering algorithm
## Validation and error handling
**Validation rules**
The system validates your configuration before creating turf groups:
1. **Required fields**: All three fields (group name, prefix, size) must be filled
2. **Positive Size**: Target turf size must be greater than 0
3. **Unique Group Name**: The turf group name cannot already exist
4. **Unique Prefix**: The generated list names cannot conflict with existing lists
5. **Geocoded Contacts**: At least some contacts in your search must have geocodes
### Common errors
**"Turf group name is already in use"**
Choose a different turf group name. Each turf group must have a unique name within your project.
**"Turf list prefix is already in use"**
The system detected that one or more of the generated list names would conflict with existing lists. Choose a different prefix.
**"Target turf size must be greater than 0"**
Enter a positive number for the target turf size using the slider.
**"No contacts with geocodes found"**
The contacts in your search don't have valid geocoded addresses. Only contacts with location data can be included in turf groups.
***
**Limitations**
**Technical limitations**
* **Geocoded Addresses Only**: Contacts without geocodes are excluded from turf groups
* **Processing Time**: Large turf groups (1000+ contacts) may take several minutes to process
* **Name Conflicts**: List names must be unique within the project
**Organizational considerations**
* **Static Territories**: Turf lists don't automatically update when contacts are added or removed from the system
\-- **Data Quality**: Territory accuracy depends on the quality of geocoded addresses
## Troubleshooting
**Turf groups not visible**
**Check:**
1. Is the Turf Groups feature enabled for your project?
2. Do you have the necessary permissions to view turf groups?
3. Are you on the Maps (Shape Builder) page?
**Clustering button disabled**
**Check:**
1. Has the search finished loading? Wait for the contact count to appear.
2. Do you have permission to create turf groups? (Admin only)
**Search returns no mappable results**
**Check:**
1. Do contacts in your search have valid addresses?
2. Have addresses been geocoded?
3. Are you searching the correct entity type?
**Clustering takes too long**
**Solutions:**
1. Break large searches into smaller geographic areas
2. Use more specific search criteria to reduce contact count
3. Contact your administrator if processing consistently fails
# Working with shapes
Source: https://help.broadstripes.com/docs/maps/working-with-shapes
## Understanding map shapes and shape groups
### Shapes
A **shape** is a user-defined area of the Broadstripes map (for instance a voting ward, neighborhood, or school district). Any people in your project who are located within a shape you've drawn are considered a part of that shape.
Broadstripes allows you to create your own shapes – for instance, to define house-visit assignments or manage other neighborhood-based organizing. This is sometimes called cutting turf. Broadstripes can also provide complicated [pre-made shapes](/docs/maps/uploading-shape-files/), like state legislative districts, whose borders are defined by law, and may change over time.
### Shape groups
A **shape group** is a collection of shapes. Like shapes, shape groups are totally customizable. You can create a shape group, name it, and decide exactly which shapes you want to include in the group. If you change your mind, you can easily add or remove shapes from the group.
## Viewing people on a map using shapes and shape groups
Once they are set up, shapes provide a simple way to navigate and assess your contacts by their location.
1. To see groups of people using the shapes feature, start by clicking the **Shape Groups** drop-down menu in the upper left-hand corner of the map. (For help getting to the map page, see the [maps overview](/docs/maps/maps-overview/) article.)
2. Choose the shape group you want displayed on the map by clicking the **checkbox** next to its name. For this example, I'm interested in comparing the number of voters in each of the city's wards, so I'll check **Wards**.
3. The map will instantly **display all the shapes** in the selected shape group. You can see below that the **Wards** shape group is made of 30 individual shapes.
4. Each shape is defined by an outline and a unique color. To get detailed information about the people located inside a certain shape, just mouse-over the map and **click anywhere on that shape**.
5. A pop-up box will open, displaying a **head count** for the people located in that shape.
For instance, in our example below, out of the total number of people in the "Wards" shape group, you can see that the **"06th Ward" shape** contains a total of 11 people (and 11 locations).
6. As shown below, you can also see summaries that correspond with the three current **searches** that have been applied to the map.
Search summaries give tallies for just the contacts *within* the selected shape:
* **Red** shows everyone in our project. (There are 11 people in the **6th Ward shape**.)
* **Purple** shows the results of a search for people who have `assessments ≤ 3`. (9 people)
* **Yellow** shows the results of a search for people who have `assessments ≤ 2`. (7 people)
7. From this same pop-up box, you can also launch some other helpful tasks:
* You can click **edit** to rename the shape or change its shape group.
* You can make the shape **read-only** and prevent other users from altering your shape.
* You can also launch the **driving directions** generator. Click the **road icon** to have Broadstripes create turn-by-turn directions to the houses encompassed in the search. **Note:** driving directions are offered only for shapes that contain 24 people or fewer.
8. If you'd like to make new shapes and shape groups or edit the shapes you have, you can learn about that next in the "Make a shape" and "Edit a shape" sections below.
# Make a shape
While the Broadstripes **Maps** feature has the power to show you all of your people across the entire region covered by your Broadstripes project, the **Shapes** feature gives you the ability to cut that turf into as many smaller, user-defined regions as you need.
These shapes can be used for political outreach, planning house visits, and any other task or analysis that's contingent on the geographic location of your people.
## Draw a polygon shape
Define a section of the map using a free-form multi-sided shape.
1. Start by clicking the **polygon icon** on the map toolbar.
2. Next, **click on the map** where you want your shape to start. **Continue to click** around the edges of the region you want to outline — each click will create an anchor point along the shape's perimeter. Your shape doesn't have to be perfect – Broadstripes can help you fit it to the streets on the map more closely in a later step. You can also go back later and manually adjust it.
3. When you're happy with the outline of your shape, **click on the first point** you drew to close and complete the shape.
4. Your new shape will automatically be **named** and **assigned a color**.
5. Each shape you create will also automatically be saved as part of a **shape group**. By default, new shapes will be saved under the first shape group listed in the left-hand panel (or under a shape group labeled "Ungrouped" if you don't have any shape groups in your project yet).
6. To see all the shapes in a shape group, click the **arrow or caret icon** next to the group's name as shown below. This will expand the shape group and show you each individual shape that's part of the group.
7. If you need to make changes to your shape – rename it, change the group it's in, or modify the boundaries – those are covered in the "Edit a shape" section below.
## Draw a rectangle shape
Rectangles allow you to divide areas into shapes quickly, but with somewhat less precision than the polygon tool.
1. On the map, start at one corner of the rectangle you want to create. **Click and hold down** the mouse, then **drag across the map** until you've created the size rectangle you need to cover your entire shape area.
2. **Release** your mouse, and your new rectangle shape will be created.
3. You can **edit** the shape name or shape group that it's part of just as you would with a polygon shape (read more in the "Edit a shape" section below).
4. You might find that rectangles don't match up well with the orientation of the streets of your city. Although you can't rotate a rectangle, you can alter the rectangle's borders by manually moving points of the outline, as explained below.
# Edit a shape
### Make changes to any shape on your map.
After you've created shapes on your Broadstripes map, it's simple to make changes. You can rename a shape or even make it part of another shape group. You can also make it read-only, or modify its boundaries.
Here's how:
## Edit a shape's name or shape group (or make it read-only)
1. On the map, **click anywhere inside the shape** you want to change to select it, then click the **Edit** button.
2. A dialog box will open.
* You can type a new **Shape name** to rename it.
* You can reassign the shape to another shape group using the **Shape group drop-down list**.
* Click **Read Only** if you don't want other users to make changes to your shape.
3. As shown in the image below, for this example, we've changed the name of our shape from "**Shape012**" to "**Jill's House visits**" and chosen to include the shape in the "**Day 3 Card Blitz**" shape group.
4. Click **Save**.
## Fine-tune the border of a shape
You can always adjust the outline of a shape by moving the points along the shape's border to redefine its outline. Here's how to make manual adjustments to the border of a polygon shape you've drawn:
### Adjust a shape's border
1. Start by clicking the **edit layers icon** to adjust a shape's borders.
2. This will display the square white **anchor points** that define the border of your shape.
* **Click and drag** any anchor point to **reposition** it and change the outline of your shape.
* **Double-click** an anchor point to **delete** it from the shape's outline.
3. When you're done making adjustments to the shape's outline, click **Save** in the map toolbar (or click **Cancel** to undo). Once you've clicked "Save", the changes can't be undone.
# Privacy Policy
Source: https://help.broadstripes.com/docs/privacy-policy
How Broadstripes handles your data
**Effective Date: November 1, 2018; Last Updated: November 24, 2025**
Thanks for using Broadstripes. Our goal is to put powerful technology in the hands of people making positive change in the labor and social sector, and we take the respect and protection of your privacy and security very seriously.
Broadstripes LLC ("Broadstripes" or "we") has created this privacy policy (the "Policy") to explain our privacy practices so you will understand when and how information is collected, used, disclosed and protected with respect to our Broadstripes CRM service (the "Service") and Web site located at [https://help.broadstripes.com](https://help.broadstripes.com) (the "Site"). By using the Service, you consent to the privacy practices described in this Policy.
Because of changes in technology and the growth and development of our business, Broadstripes may need to modify this Policy from time to time. Changes to this Policy are discussed at the end of this document.
## Section 1. Types of Information We Collect About You
Broadstripes collects, uses and discloses two types of information: Personal Information and Non-Personal Information. "Personal Information" is information that is directly associated with a specific person or entity such as a user's name, initials or nickname, e-mail address, and user-chosen ID and password. "Non-Personal Information" is information that, without the aid of additional information, cannot be directly associated with a specific person or entity.
## Section 2. Children
The Site is not intended for children under 13 years of age. We do not knowingly collect information from children under the age of 13.
## Section 3. Gathering, Use, and Disclosure of Non-Personal Information
**3.1 Gathering Non-Personal Information**
**3.1.1 Web Browsers**
Like most Site operators, Broadstripes gathers from users of the Site Non-Personal Information of the sort that Web browsers, depending on their settings, may make available. That information includes the user's Internet Protocol ("IP") address, operating system and browser type, and the locations of the Web pages the user views right before arriving at, while navigating and immediately after leaving the Site.
**3.1.2 Cookies**
A cookie is a small amount of data, often including an anonymous unique identifier, that is sent to your browser from a Site's computers and stored on your computer's hard drive. Most browsers automatically accept cookies as the default setting. Broadstripes uses cookies to track a user's use of the Site during each Site session, both to help Broadstripes improve users' experiences and to help Broadstripes understand how the Site is being used. YOU CAN MODIFY THE SETTING TO REJECT COOKIES OR TO PROMPT YOU BEFORE ACCEPTING A COOKIE FROM THE SITES YOU VISIT BY EDITING YOUR BROWSER OPTIONS. IF YOU DECIDE NOT TO ACCEPT OUR COOKIES, HOWEVER, YOU WILL NOT BE ABLE TO USE THE SERVICE.
**3.1.3 Google Web Analytics Service**
Broadstripes also uses cookies as part of the Google Web Analytics service that Broadstripes uses on the Site. Broadstripes may collect, use and disclose Non-Personal Information by means of the cookies used in connection with Google Web Analytics, and such use is subject to this Policy. In addition, Google may collect Non-Personal Information about you by means of the Google Web Analytics service. Google's use of this Non-Personal Information is subject to the [Google Privacy Policy](http://www.google.com/intl/en/policies/privacy/). For further information about third parties' collection of Non-Personal Information and Personal Information by means of the Site, please see Section 5 below.
**3.1.4 Internal Web Analytics Service**
Broadstripes also uses cookies as part of an internal Web Analytics system that we created for the Site. Broadstripes may collect and use Non-Personal Information by means of the cookies used in connection with the Service, and such use is subject to this Policy. We will only disclose such information to administrators affiliated with your Organization.
**3.1.5 Web Beacons**
A "Web Beacon" is an object that is embedded in a web page or email message. It is usually invisible to users but allows Site operators to check whether a user has viewed a particular web page or email message. Web Beacons collect only a limited set of information including a cookie number, time and date of a page or message view, and a description of the page or message on which the Web Beacon resides.
You may not decline Web Beacons, however, they can be rendered ineffective by declining all cookies or modifying your browser setting to notify you each time a cookie is tendered and permit you to accept or decline cookies on an individual basis. Third parties are not permitted to use Web Beacons on the Site.
**3.2 Use of Non-Personal Information**
Broadstripes analyzes Non-Personal Information gathered from Site users to help Broadstripes better understand how the Site is being used. By identifying patterns and trends in usage, Broadstripes is able to better design the Site to improve users' experiences, both in terms of content and ease of use. Broadstripes does not link information gathered using cookies and Web Beacons to Personal Information.
**3.3 Disclosure of Non-Personal Information**
We use cookie technology to: (i) collect information so that we can improve our Site by seeing which areas and features are most popular; (ii) personalize the Site and improve the Site experience; and (iii) allow you to visit the Site without re-entering your member ID and/or password during a continuous session.
We may share Non-Personal Information about our users in the aggregate with third parties for various purposes, including to help us better understand and improve our Service.
## Section 4. Collection, Use, and Disclosure of Personal Information
**4.1 Collection of Personal Information**
As defined above, Personal Information is information that can be directly associated with a specific person or entity. We collect a range of Personal Information from and about Site users. Much of this Personal Information is information provided by users themselves when they register with the Site and use the Site and Service. For example, when you register with the Site to use the Service, you may submit, your name, initials or nickname, and e-mail address. You also create a user-chosen password for your use when accessing the Service. In addition, we may collect and retain information that identifies you personally when you send us feedback comments, questions or suggestions.
Site users are under no obligation to provide Broadstripes with Personal Information of any kind, with the caveat that a user's refusal to do so may prevent the user from using certain Site features. BY REGISTERING WITH THE SITE, YOU CONSENT TO THE USE AND DISCLOSURE OF YOUR PERSONAL INFORMATION AS DESCRIBED IN THIS COLLECTION, USE AND DISCLOSURE OF PERSONAL INFORMATION SECTION.
**4.2 Use of Personal Information**
Broadstripes may use the Personal Information a user submits for any purposes related to Broadstripes's business purposes, including, but not limited to: (i) understanding a user's needs; (ii) generating statistical studies; (iii) estimating audience size; (iv) measuring aggregate traffic patterns; (v) understanding Site demographics, customer interest and other trends about users; (vi) improving Services, information and products; (vii) communicating back to the user; (viii) providing a user with Services or support; (ix) updating the user on Services, information and products; (x) personalizing the Site for the user; (xi) notifying the user of any changes with the Site which may affect the user; (xii) enforcing terms of use on the Site; and (xiii) allowing the user to access Services or otherwise engage in activities the user selects.
**4.3 Disclosure of Personal Information**
As described in Section 4.1 ("Collection of Personal Information"), users may, at their option, disclose their own Personal Information by any means they choose. Broadstripes will also disclose Personal Information, in the following circumstances:
**4.3.1 Material You Choose to Reveal in On-line Forums, Blogs, Message Boards, Chat Rooms, Project Web Services or Similar Services**
You may post Personal Information on areas of the Site that may be viewed by other users or the public, although we recommend that you not do so. We urge you to use good judgment and not post Personal Information that you do not want other users to know.
Users may not be able to change or remove public postings once they are posted. Such Personal Information may be used by visitors of these pages to send you unsolicited messages.
YOU ASSUME ALL RESPONSIBILITY FOR ANY LOSS OF PRIVACY OR OTHER HARM RESULTING FROM YOUR VOLUNTARY DISCLOSURE OF PERSONAL INFORMATION.
**4.3.2 DMCA Infringement Notifications, Notices of Violations of Site Terms of Service and Other Communications Directed to Broadstripes**
By submitting a Digital Millennium Copyright Act ("DMCA") Infringement Notification or other communication (including communications about content stored on or transmitted through the Site) you consent to have this communication forwarded to the person or entity who stored or transmitted the content addressed by your communication, in order to facilitate a prompt resolution. For notices other than DMCA Infringement Notifications, upon request, Broadstripes will edit out your name and contact information. However, DMCA Infringement Notifications (including any personally identifiable information set forth in the Notifications) will be forwarded as submitted to Broadstripes without any deletions.
All use of the Site and the Service is subject to the Broadstripes LLC DMCA Policy.
**4.3.3 Surveys**
From time to time, Broadstripes may also ask Site users to participate in surveys designed to help Broadstripes improve the Site. Any Personal Information provided to Broadstripes in connection with a survey will be used only in relation to that survey, and will be disclosed to third parties not bound by this Policy only in non-personally-identifying, aggregated form.
**4.3.4 Employees and Third Party Processors**
Broadstripes will disclose Personal Information to those Broadstripes employees, contractors, affiliates, vendors and suppliers who process Personal Information on Broadstripes's behalf or participate with Broadstripes in the provision or operation of the Site.
**4.3.5 By Law, to Protect Rights and to Comply with Broadstripes Policies**
Broadstripes discloses Personal Information if: (1) required to do so by law, or in response to a subpoena or court order; (2) Broadstripes believes at its sole discretion that disclosure is reasonably necessary to protect against fraud, to protect the property or other rights of Broadstripes, other users, third parties or the public at large; and (3) Broadstripes believes that you have abused the service by using it to attack other systems or to gain unauthorized access to any other system, to engage in spamming or otherwise to violate applicable laws.
**4.3.6 Business Transfers; Bankruptcy**
Broadstripes reserves the right to transfer all Personal Information in its possession to a successor organization in the event of a merger, acquisition, or bankruptcy or other sale of all or a portion of Broadstripes assets. Other than to the extent ordered by a bankruptcy or other court, the use and disclosure of all transferred Personal Information will be subject to this Policy, or to a new privacy policy if you are given notice of that new privacy policy and you affirmatively opt-in to accept it. Personal Information submitted or collected after a transfer, however, may be subject to a new privacy policy adopted by the successor organization.
## Section 5. Collection and Use of Information by Third Parties Not Covered by This Policy
Third parties are under no obligation to comply with this Policy with respect to Personal Information or Non-Personal Information that users provide directly to those third parties or that those third parties collect for themselves (including, without limitation, Google as described in Section 3.1.3). Please be aware that we may provide links to third party Sites as a service to our users and we are not responsible for the content or information collection practices of those sites. Broadstripes does not control the third party websites accessible through the Site. This Policy does not apply to information provided to or gathered by third parties that operate them. Third parties' privacy policies will differ from those of Broadstripes. Therefore, we encourage you to review and understand third parties' privacy practices before visiting third party sites or providing third parties with information, and take those steps necessary to, in your discretion, protect your privacy.
## Section 6. Security
Broadstripes takes reasonable precautions to prevent unauthorized release, corruption, or loss of your personal and project data. However, neither people nor security systems are foolproof. Therefore, while we have taken efforts to guard your personal information, we cannot guarantee its absolute security.
## Section 7. Modifying Your Personal Information
If you are a registered user of our Service, you may view, correct, and delete your personal information, simply by logging into the Service and editing your profile.
## Section 8. Updating This Policy
We may revise and update this Policy if our practices change, as technology changes, or as we add new services or change existing ones. The first time you log in to the Service after any revision is made to the Policy, you will be alerted to the change, and your acceptance of it will be required for continued use of the Service. In addition, any changes to this Policy will be posted on the Site, and we will update the "last updated" date set forth above.
## Section 9. Contacting Broadstripes
Any questions about this Policy should be addressed to:
> **Broadstripes LLC**
>
> 59 Elm St Ste 402
>
> New Haven, CT 06510
or by email to: [support@broadstripes.com](mailto:support@broadstripes.com).
# Codes and Assessments
Source: https://help.broadstripes.com/docs/project-settings/assessment-settings
#### What's the difference between "Assessments" and "Codes"?
To give a short answer – well, nothing! "Assessment" and "Code" refer to the exact same piece of employment information in Broadstripes; it's just a matter of how it is labeled. In fact, you may use the label "Assessment" in one Broadstripes project and "Code" in another.
You can change this label at any time in your [General settings](/docs/project-settings/project-settings-overview/).
Assessments help your users track where the workers stand in relation to your campaign's goals. Broadstripes makes it easy to set up a customized set of **assessment codes** to match your campaign's style.
Commonly, administrators will set up assessments using a 1 through 5 numeric scale, with 1 indicating the strongest support and 5 indicating hostility. However, with Broadstripes, you can create as many codes as you require to meet your needs.
1. To get started, you can access your codes in one of two ways: Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**) and search for **Assessments** (or **Codes**, depending on your [General settings](/docs/project-settings/general-settings) label).
Or, from the **Project settings page**, click the **Assessments** (or **Codes**) link under **Customization**.
2. The **Assessment codes table** will open, displaying all of the codes you have set up to measure workers' support in an interactive data grid. You can sort, filter, and manage your project's codes from this page.
If you haven't yet set up any assessments, the page will display a **New Assessment** button to get started.
3. For details on how to edit, delete, or create new assessment codes, or to configure assessment options (including enabling assessments for organizations), go to the [assessment codes](/docs/admin-guides/data-tools/assessment-codes/) article.
# Calculated columns
Source: https://help.broadstripes.com/docs/project-settings/calculated-columns-settings
Calculated columns allow you to create and display custom metrics for your project. See [Working with calculated columns](/docs/admin-guides/data-tools/working-with-calculated-columns) for full details on creating columns and using them in status reports, saved layouts, and turf panels.
To manage your calculated columns:
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Calculated columns**. You can start typing to filter the list.
2. The settings page lists all calculated columns for your project. From here you can view, edit, and delete any column, or click **+ New Calculated Column** to create one.
# Change explorer and recent changes
Source: https://help.broadstripes.com/docs/project-settings/change-explorer
## Overview
The **Change explorer** on the **Recent Changes** tab gives a more effective level of detail about changes that have occurred in your project. Change explorer gives you all the details to identify how, when, and by whom changes were made throughout your project.
Filterable columns include:
* **Date**
* the user or entity the item was **Changed By**
* the Import # (the import ID of the data import that modified the contact) if applicable
* the contact's Broadstripes ID
* the **Contact** name
* the Object Type (the data field that was modified e.g., Address, Contact Information, Employment, etc.)
* Attribute that was changed
* the attribute's Old Value
* the attribute's New Value
* a brief Summary Text of the change that occurred
### Selecting your columns
Change explorer gives users a variety of information for each change. You can choose what values/columns you want to view in your Change explorer by selecting the gear icon just above your Change explorer columns. Uncheck any columns that you want to hide, and they will be removed from your view.
### Filtering for relevant changes
At the top of each column, you may enter values to filter the change data that is returned. Changes can go back as far as the beginning of the project and could mean tons of data to review. To narrow down this data, enter the specific values that you are looking for. For example, if you wanted to view changes made by Jane Organizer within the first half of 2023, you would:
1. Enter the values 01/01/2023 -> 06/30/2023 in the **Date** column.
2. Select Jane Organizer from the dropdown menu in the **Changed By** column.
3. Click **Run my new query.**
### Including data import changes
Changes occur from a variety of sources, including users, Public forms, and data imports. Data imports can generate an extensive amount of changes. To view those changes in your Change explorer results, click the "Include changes made by data imports?" checkbox in the upper left corner of the Recent Changes tab.
### Downloading Change explorer results
Users can download the Change explorer to a spreadsheet or PDF. You will download the data as you see it in Change explorer. This will include your filtering specifications and column selections. To download your Change explorer results, click on the paper download icon in the right corner above the columns. Select "Download Spreadsheet" or "Download PDF." Your data will be generated in the format that you specified.
## Switching to the older format
As a project admin, you automatically have the **Change explorer** enabled. If you prefer a less detailed view, you can click on **"switch to old format"** in the upper right corner of the **Recent Changes** tab. This will take you to the previous format with 3 fixed columns (Name, Updated By, and Last Updated) that will display the last 25 changes.
If you decide that you want to go back to a more detailed view of changes, simply select "switch to new format" in the upper right corner of the **Recent Changes** tab.
### Enabling Change explorer for basic users
Project admins can also enable the Change explorer for basic users. Here's how:
1. Click the gear icon at the top right corner of the app, then select **General settings**.
2. Enable the **"See the change history viewer"** toggle. For projects that have Limited visibility enabled, admins can allow basic users to see changes made to contacts outside of their visibility if the user that made the change is within their visibility by enabling the toggle directly beneath "See change history viewer."
Basic users may now view the Change explorer in their Recent Changes tab on the homepage.
# Custom house visit questions
Source: https://help.broadstripes.com/docs/project-settings/custom-house-visit-questions
Broadstripes can automatically print individual question sheets for each person on your house visit (house call) list. As an organizer, you can use the sheets to prompt you and help you record answers to the questions that are most important to your campaign.
1. To get started, click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **All project settings**.
2. From the **Project settings page**, click the **Custom house visit questions** link under **Reports**.
3. Use the form that opens to enter up to four questions or talking points that organizers should cover during a house visit.
4. Click **Save** to record your work. A completed form might look like this:
5. Now that the questions are saved, we'll look at how to **print the house visit sheets**.
6. Since Broadstripes doesn't know who is on our house visit list, first, we'll need to search for and select the people to include before we can print our sheets.
We'll **run a saved search** to bring up our house visit list. If you don't already have a saved search like this, you can learn about creating your own saved searches in the [save and share searches](/docs/search/save-and-share-searches) article.
7. Next, we'll select everyone in our **House visit list** search results by choosing **all** from the toolbar. (You could also select just a few people by checking the box next to their names.)
8. Finally, we'll select **Custom House Visit Sheet** from the **Reports drop-down menu**. This will generate a separate sheet for each person we've selected from the search results, and save it as a single PDF document.
9. After you give your report a **custom title** and click **OK**, you'll see a message explaining that your house visit sheets are being created and will download automatically.
10. To **view** and **print** your custom house sheets, you have two choices:
1. You can **stay on the current page** and wait for the **download dialog** to appear. When the dialog box appears, **name** your PDF file, choose **where** to save it and click **Save** to download the sheets immediately.
2. You can **leave the current page** and download the sheets at a later time.
If you choose to download and print your house visit sheets later, click the Reports link in the left-hand navigation panel. That link brings you to the Requested Reports index page.
The custom house visit sheets will include each person's contact information along with your custom questions, making it easy for organizers to have productive conversations and record important responses during house visits.
# Data imports
Source: https://help.broadstripes.com/docs/project-settings/data-imports-settings
Manage your project's data import history and saved import configurations from the Data Imports page.
**If you are looking for step-by-step help on how to import data** into your Broadstripes project, start with the [Data import overview](/docs/data-import-admin/data-import-overview). This article covers the **Data Imports** management page — import status, history, and saved configurations.
## Intro
Whether you have used data import only once (when you initially [imported a spreadsheet](/docs/data-import-admin/import-a-spreadsheet)), or you do regular re-imports from other databases to keep your Broadstripes project updated, you can manage all data import tasks and history from the **Data Imports** page.
You can access the page in one of two ways: click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**) and choose **Data imports**; or, from the **All project settings** page, click **Data imports** under the **Data import** heading.
The page has two tabs: **Data Imports** and **Saved Configurations**.
## Data Imports tab
The **Data Imports** tab lists every past, in-process, and scheduled import in the project, one row per import, with columns for status, type (manual or automated), timing, and clickable statistics — contacts created, contacts matched, rows with warnings, and rows skipped. Click the button at the top right of the table to choose which columns are visible.
From this page you can also:
* **Start a new import** with the **+ New\...** button (see [Import a spreadsheet](/docs/data-import-admin/import-a-spreadsheet)).
* **Stop** a running import, and **restart** a stopped one from where it left off.
* **Delete** imports that haven't run yet. Select them with the checkboxes and click **Delete** — completed and in-process imports cannot be deleted.
For a column-by-column tour of the table, the meaning of each status, and how to drill into an import's results, see [Analyze import results](/docs/data-import-admin/analyze-import-results).
The imports on this page are also searchable: the search language's `import` keyword finds the contacts an import touched, e.g. `import = "Import 62"`, `import = "Import 36 Added"`, `import = "Import 49 Matched"`.
## Saved Configurations tab
Clicking the **Saved Configurations** tab opens the list of import configurations saved in this project.
### What is a saved configuration?
While preparing an import, admins can save its specifications — field mappings, match fields, and the policies for how data will be handled — as a "**saved configuration**". Saved configurations are especially useful when you're importing data from an external system and plan to re-import it in the future: the re-imported data will be handled exactly the same way each time. You create one during the import process, under **Configuration Options > Create a new configuration** (see [Import a spreadsheet](/docs/data-import-admin/import-a-spreadsheet#configuration-options-reusing-your-work)).
The tab lists each configuration's **Name** and, if the configuration is tied to one, its **External System**.
Click a configuration's name to view its details: the spreadsheet columns it expects, which Broadstripes field each one maps to, which columns are matched on (a checkmark in the **Match?** column), and which columns build the shop structure (a checkmark in the **Department Indicator** column).
Saved configurations are read-only — you cannot edit one, but you can create a new configuration during any import. Broadstripes applies a saved configuration automatically when you upload a spreadsheet whose column headers exactly match it.
# External systems
Source: https://help.broadstripes.com/docs/project-settings/external-systems-settings
External Systems allow you to track and store IDs from other platforms (like Salesforce, Highrise, QuickBooks, or any other system) alongside your people and organization records in Broadstripes. This enables you to:
* **Maintain cross-system references**: Keep track of which records correspond between Broadstripes and your other systems
* **Import data more intelligently**: Match and update existing records using external IDs instead of creating duplicates
* **Deduplicate records**: Use external IDs to find and merge duplicate entries
* **Personalize communications**: Include external system IDs in emails and text messages
* **Search efficiently**: Find records quickly using external system IDs
## Real-world examples
**Example 1: External Platform Integration**
Your organization uses another platform for fundraising (Let's call it "GiveFundGo") but Broadstripes for organizing. You can create a "GiveFundGo" external system to store donor IDs from GiveFundGo. When importing donor data, you can match records by GiveFundGo ID to update existing people instead of creating duplicates.
**Example 2: Payroll System**
You maintain employee records in both Broadstripes and an external payroll system. Create a "Payroll System" external system to store employee IDs. When payroll information changes, you can import updates that match by employee ID.
**Example 3: Multiple Data Sources**
A union local tracks members in Broadstripes, but also receives data from their national office's membership database and their health benefits provider. They create external systems for "National Database" and "Benefits System" to maintain connections between all three systems.
***
## Creating an external system
1. **Navigate to External Systems**
* Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**)
* Find "External systems" in the menu — you can start typing to filter the list
* Click "External systems" to view all existing external systems
2. **Create a New External System**
* Click the "New External System" button
* You'll see a form with several configuration options
3. **Configure Basic Settings**
**System Name** (Required)
* Enter a clear, descriptive name for the system (e.g., "Salesforce", "Highrise", "QuickBooks", "National Membership Database")
* This name will appear throughout the app, so choose something recognizable
* Examples:
* "GiveFundGo"
* "Payroll"
* "National Database"
* "Benefits Provider"
No need to add "ID" to the system name, as it will be added automatically.
4. **Configure external system settings**
Each external system has several optional features you can enable:
**What it does**: Prevents users from manually editing or deleting external system ID values.
**When to use it**:
* ✅ Use when external system IDs should only be updated via data imports or automated processes
* ✅ Use when you want to prevent accidental changes to critical reference data
* ❌ Don't use if users need to manually enter or correct external system IDs
**Example**: Lock your "Payroll System" external system so staff can't accidentally change employee IDs that must match your payroll provider's records.
**What it does**: Ensures that every external system ID is unique across all people and organizations in your project.
**When to use it**:
* ✅ Use when IDs in the external system are guaranteed to be unique (like Payroll IDs)
* ✅ Use when you want to prevent duplicate entries
* ❌ Don't use if the same external ID might legitimately appear on multiple records
**Example**: If you enable this for "GiveFundGo", you cannot have two people with the same GiveFundGo ID "003B000000ABC123".
**What it does**: Allows a person to be linked to multiple employers through this external system.
**When to use it**:
* ✅ Use when workers might have jobs at multiple employers
* ✅ Use when your project supports multiple employments
* ❌ Don't use if each person should only have one employer
**Example**: Enable for "Payroll System" if workers might have multiple part-time jobs at different locations.
**What it does**: When a user types an external system ID in the search box and it matches this system's format, the search automatically executes.
**When to use it**:
* ✅ Use when your external IDs have a distinctive format
* ✅ Use when users frequently search by this external ID
* ❌ Don't use if the ID format might match other search terms
**Example**: If your IDs always start with "003", auto-submit makes searching instant without pressing Enter.
**What it does**: Allows you to insert external system ID values into email and SMS templates using merge tokens.
**When to use it**:
* ✅ Use when you want to include external system IDs in communications
* ✅ Use when recipients need to reference their ID in another system
**Example**: Enable for "Member ID" so you can send emails like:
> "Dear %first-name%, your member ID is %member-id%. Please reference this when calling the benefits hotline."
**How to use the merge token**:
* The token format is `%system-name-id%` where spaces become hyphens and everything is lowercase
* "GiveFundGo" becomes `%givefundgo-id%`
* "Local Member" becomes `%local-member-id%`
**What it does**: Shows the external system ID field in the call center interface for quick reference during calls.
**When to use it**:
* ✅ Use when call center staff need to see or reference external system IDs during calls
* ✅ Use when external IDs help verify caller identity
* ❌ Don't use for systems that aren't relevant to phone conversations
**Example**: Display "Member ID" in the call center so staff can quickly tell callers their member number when asked.
5. **Save the External System**
* Review your configuration
* Click "Create External System"
* The system is now available throughout your project
***
## Using external systems in data imports
External systems are most powerful when used in data imports. They allow you to intelligently match and update existing records instead of creating duplicates.
### How external system matching works in imports
When you configure an import to use external system matching:
1. **During import**, Broadstripes reads the external system ID from each row
2. **The system searches** for existing people or organizations with that exact external system ID
3. **If a match is found**: The import updates the existing record with new data from the file
4. **If no match is found**: The import creates a new record and stores the external system ID
5. **The external system ID is stored** on the record for future matching
***
### Setting up external system matching in an import
**Step 1: Prepare your import file**
Your import file should include a column with external system IDs. For example:
```csv theme={null}
External ID,First Name,Last Name,Personal Email,Personal Cell Phone
SF-003B0000ABC,John,Smith,jsmith@example.com,555-0100
SF-003B0000XYZ,Jane,Doe,jdoe@example.com,555-0101
```
**Step 2: Configure the import**
1. **Start your import** (People Import or Organizations Import)
2. **Map your columns** as usual
3. **In the field mapping section**, look for your external system in the dropdown menu
4. **Map the column** containing external IDs to your external system field
Example mapping:
```
Column: "External ID" → Maps to Broadstripes field: "GiveFundGo ID"
```
**Step 3: Configure matching rules**
On the import configuration, you'll see a column labeled "Match?"
1. **Checkoff "Match?"**
* Check the box for your external system in the "Match?" column
* This tells the import to search for existing records using the external system ID
2. **Choose update behavior in the configuration**
* **Update existing records**: If match found, update the record with new data
* **Skip existing records**: If match found, don't change the existing record
**Step 4: Run the import**
1. **Preview the import** to see what will happen
* The preview shows which records will be matched vs created new
2. **Review the match results**
* Check that external system IDs are matching as expected
3. **Click Submit**
4. **Review the results**
* The import summary shows how many records were matched vs created
### Import scenarios and examples
**Scenario 1: Initial Import with External IDs**
**Situation**: You're importing data from Salesforce for the first time.
**Configuration**:
* Map your Salesforce ID column to the "Salesforce" external system
* Enable matching on the external system in the **Match?** column
* Some records might already exist from manual entry or other imports
**Result**:
* Records with matching external IDs are updated
* Records without matches are created as new
* All records now have Salesforce IDs stored for future imports
**Example**:
```csv theme={null}
Salesforce ID,Name,Email
003B000001,John Smith,john@example.com → Updates existing John Smith (matched by SF ID)
003B000002,Jane Doe,jane@example.com → Creates new record (no match found)
```
***
**Scenario 2: Regular Update Imports**
**Situation**: You import updated data from your payroll system weekly.
**Configuration**:
* Map employee ID column to "Payroll System" external system
* Enable matching on the external system in the **Match?** column
* Choose "Update existing records"
**Result**:
* Each week, existing employees are updated with current information
* New employees are added automatically
* No duplicates are created because matching is by employee ID
**Example**:
```csv theme={null}
Employee ID,Status,Salary
E12345,Active,75000 → Updates employee E12345's status and salary
E12346,Active,68000 → Updates employee E12346's status and salary
E12347,Active,82000 → Creates new employee record (new hire)
```
***
**Scenario 3: Employment Import with External Systems**
**Situation**: You're importing employment records where employers are tracked in an external system.
**Configuration**:
* Create external system for "Employer Unit ID"
* Map employer ID column to external system
* Enable "Allows Multiple Employments" if people can have multiple jobs
* Configure employment matching rules (Update or Append)
**Result**:
* People are linked to organizations using external employer IDs
* Employment records are created or updated based on external system matching
* Both person and organization records can be matched by external IDs
**Example**:
```csv theme={null}
Person External ID,Employer External ID,Job Title,Hire Date
EMP-001,ORG-555,Teacher,2023-01-15 → Links person EMP-001 to org ORG-555
EMP-001,ORG-556,Tutor,2023-06-01 → Adds second employment for same person
EMP-002,ORG-555,Principal,2020-08-01 → Links different person to same org
```
### Troubleshooting import issues
###### Problem: Records not matching when they should
**Possible causes**:
* External system IDs in import file don't exactly match stored IDs
* Extra spaces, different capitalization, or different formats
* External system matching not checked in mapping section
**Solutions**:
* Check that ID values are exactly the same (Broadstripes normalizes some differences)
* Verify external system matching is checked in mapping section
* Review import preview to see why matches aren't being found
* Check that the correct external system is selected in field mapping
###### Problem: Multiple records matching the same external ID
**Possible causes**:
* "Enforce Uniqueness" was not enabled when creating the external system
* Duplicate external IDs were stored before uniqueness was enforced
* Data quality issues in the source system
**Solutions**:
* Run a report to find duplicate external system IDs
* Clean up duplicates by merging entities
* Enable "Enforce Uniqueness" to prevent future duplicates
* Fix data issues in the source system
###### Problem: External system IDs not being stored after import
**Possible causes**:
* Field mapping not configured correctly
* Import errors preventing external system ID storage
**Solutions**:
* Verify field mapping includes the external system
***
## External systems on public forms
Public forms are web forms that allow external users to submit information to your Broadstripes project. External systems can be integrated with public forms for two purposes:
1. **Collecting external system IDs** from form submitters
2. **Matching existing records** using external system IDs and name to prevent duplicates
### How external systems work on public forms
When you add an external system field to a public form:
* **The field appears** as a text input on the form
* **Form submitters can enter** their external system ID (e.g., "Enter your member ID")
* **On submission**, Broadstripes searches for existing records with that external system ID
* **If a single match is found**: The form data is merged with the existing record
* **If no match or multiple matches**: A new record is created (with potential\_matches tracked)
### Setting up external system fields on public forms
**Step 1: Create or edit a public form**
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Public forms**
2. Create a new public form or edit an existing one
3. Go to the Standard fields tab of the public form editor
**Step 2: Add external system field**
1. In the public form editor, look for available field types in the **Unique IDs** section
2. Find your external system in the list (e.g., "GiveFundGo ID", "Member ID")
3. Add the external system field to your form
4. Be sure that "Attempt to match to existing contact" is checked for the form
**Step 3: Test the form**
1. Submit test entries with known external system IDs
2. Verify that matching works correctly
3. Check that new records are created when no match exists
4. Confirm that existing records are updated when matches are found
**Enforce Uniqueness Restriction**
You **cannot** enable "Enforce Uniqueness" on an external system that is used on a public form
### Public form scenarios and examples
**Scenario 1: Membership Update Form**
**Situation**: Members can update their contact information using a web form.
**Configuration**:
* Create "Member ID" external system
* Add "Member ID" field to public form
* Enable matching
* Form includes fields for address, phone, email
**User Experience**:
1. Member visits form: "Update Your Contact Information"
2. Member enters Member ID: "MEM-12345"
3. Member updates their phone number
4. On submission:
* Broadstripes finds existing record with Member ID "MEM-12345" and name
* Updates the phone number on that record
* No duplicate record created
**Result**: Member information stays up-to-date without creating duplicates.
**Scenario 2: Event Registration with External ID**
**Situation**: You're collecting event registrations and want to link them to existing records when possible.
**Configuration**:
* Create "Event System" external system (not enforcing uniqueness)
* Add "Event System ID" field to registration form (optional field)
* Enable matching by Event System ID and email
* Form includes event-specific fields
**User Experience**:
1. User visits registration form
2. User optionally enters external system ID (if they know it)
3. User enters email and other information
4. On submission:
* If external ID provided and matched: Links to existing record
* If email matched but no external ID: Links to existing record
* If no matches: Creates new record with the external ID stored
**Result**: Registrations are intelligently linked to existing records when possible.
***
## Locking data fields with external systems
The "Locked" setting on external systems provides a way to protect critical external system ID values from accidental modification or deletion.
### What "locked" means
When an external system is marked as "Locked":
* Users **cannot** manually edit or delete external system ID values through the UI
* External system IDs **can still** be updated through data imports
* External system IDs **can still** be set when creating new records
* The protection prevents accidental changes to critical reference data
### When to lock an external system
**Lock when**:
* ✅ IDs should only be updated through data imports
* ✅ You want to prevent staff from accidentally changing critical reference IDs
* ✅ The external system is the primary key for integration with another system
**Don't lock when**:
* ❌ Users need to manually enter or correct external system IDs
* ❌ External system is only for reference and not critical
* ❌ You're still setting up the project and need flexibility
### How locking affects different operations
| Operation | Locked | Unlocked |
| ------------------------------ | --------- | --------- |
| Manual entry on new record | ✓ Allowed | ✓ Allowed |
| Manual edit on existing record | ✗ Blocked | ✓ Allowed |
| Manual deletion | ✗ Blocked | ✓ Allowed |
| Import update | ✓ Allowed | ✓ Allowed |
### User experience with locked external systems
**What users see**:
* External system ID field appears as **read-only**
* Users can view the external system ID but not modify it
* The ID is visible in search results and on person/organization overview pages
**What admins can do**:
* Admins can unlock the external system if corrections are needed
* After making corrections, re-lock the external system
***
### Fields that can be locked
Here's a comprehensive overview of what can be locked with external systems:
| Field Type | What Gets Locked | How It's Linked |
| ----------------------- | ----------------------------- | ------------------------------------------------------ |
| **External System IDs** | The external ID value itself | Automatically when ID is stored |
| **Custom Fields** | Field value becomes read-only | Link custom field to external system in field settings |
| **Email Addresses** | Specific email addresses | Imported with external system specified as source |
| **Phone Numbers** | Specific phone numbers | Imported with external system specified as source |
### How locking affects different operations
| Operation | Locked External System | Unlocked External System |
| -------------------------------------------------------------- | ----------------------------------- | ------------------------ |
| **External System IDs** | | |
| Manual entry on new record | ✓ Allowed | ✓ Allowed |
| Manual edit on existing record | ✗ Blocked | ✓ Allowed |
| Manual deletion | ✗ Blocked | ✓ Allowed |
| Import update | ✓ Allowed | ✓ Allowed |
| Public form submission | ✓ Allowed | ✓ Allowed |
| **Custom Fields** | | |
| Manual edit of field value | ✗ Blocked (shows locked message) | ✓ Allowed |
| Import update of field value | ✓ Allowed | ✓ Allowed |
| View field value | ✓ Allowed | ✓ Allowed |
| **Contact Information** (imported with the external system ID) | | |
| Edit email/phone | ✗ Blocked (text input disabled) | ✓ Allowed |
| Delete email/phone | ✗ Blocked (delete button hidden) | ✓ Allowed |
| Bulk delete | ✗ Skipped automatically | ✓ Allowed |
| Import update | ✓ Allowed | ✓ Allowed |
| **Employment Records** | | |
| Delete employment | ✗ Blocked (delete button hidden) | ✓ Allowed |
| Terminate employment | ✗ Blocked (terminate button hidden) | ✓ Allowed |
| Change primary employment | ✗ Blocked (if locked) | ✓ Allowed |
| View employment details | ✓ Allowed | ✓ Allowed |
| Import update | ✓ Allowed | ✓ Allowed |
**Important:** A user may still delete or terminate an employment using the Actions menu on the Search results page.
### User experience with locked external systems
**What users see**:
* External system ID field appears as **read-only**
* Users can view the external system ID but not modify it
* The ID is visible in search results and on person/organization overview pages
**What admins can do**:
* Admins can unlock the external system if corrections are needed
* After making corrections, re-lock the external system
* Import processes work normally regardless of lock status
### Linking and locking custom fields
Custom fields can be linked to an external system to indicate that their values come from that system and should only be updated via import.
#### How to link a custom field to an external system
1. **Navigate to Custom Fields**
* Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Custom fields**
* Find the custom field you want to link (or create a new one)
2. **Configure the Custom Field**
* Edit the custom field
* Look for "External System" dropdown menu
* Select the external system from the dropdown
* Save the custom field
3. **Enable Locking**
* Edit the external system
* Check the "Locked" checkbox
* Save the external system
**Result**: The custom field becomes read-only in the UI with a message like:
> `[locked by Payroll System]`
#### Custom field locking scenarios
**Scenario 1: Payroll Data Fields**
You import employee salary, hire date, and job classification from your payroll system weekly.
**Configuration**:
* Create external system: "ADP Payroll" (Locked ✓)
* Create custom fields:
* "Salary" → Link to "ADP Payroll"
* "Seniority Date" → Link to "ADP Payroll"
* "Job Level" → Link to "ADP Payroll"
**Result**:
* Staff can view these fields but cannot edit them
* Values update only through weekly payroll imports
* Prevents manual changes that would conflict with payroll records
**Scenario 2: National Database Sync**
Your national office maintains member status, local assignment, and dues current status.
**Configuration**:
* Create external system: "National Database" (Locked ✓)
* Create custom fields:
* "Member Status" → Link to "National Database"
* "Local Assignment" → Link to "National Database"
* "Dues Current" → Link to "National Database"
**Result**:
* Local staff can see member data but cannot change it
* Only national office imports can update these fields
* Ensures consistency across all locals
#### Unlinking custom fields
If you need to unlink a custom field from an external system:
1. Edit the custom field
2. Clear or change the external system selection
3. Save the custom field
4. The field becomes editable again
### Linking and locking contact information
Email addresses and phone numbers can be sourced from external systems to ensure contact information stays synchronized with authoritative sources.
#### How contact information locking works
When you import email addresses or phone numbers through an external system import:
1. **Map Email/Phone Columns**: Map email/phone columns to the import
2. **Include External System Column**: Include the corresponding external system ID values in the import
3. **Import Executes**: Contact information is created/updated
4. **Automatic Linking**: Each email/phone is linked to the external system ID
5. **Locked Display**: If the external system is locked, contact info shows as read-only
#### User experience with locked contact info
**Locked Email Display**:
```
Email: john.smith@company.com [Sourced from and locked by Payroll System]
Type: Work
[Edit] [Delete] ← Buttons are disabled/hidden
```
**Locked Phone Display**:
```
Phone: (555) 123-4567 [Sourced from and locked by HR System]
Type: Mobile
Primary: Yes
[Edit] [Delete] ← Buttons are disabled/hidden
```
**Locked Address Display**:
```
Address: 123 Main St, Anytown, USA [Sourced from and locked by HR System]
Type: Home
[Edit] [Delete] ← Buttons are disabled/hidden
```
### Linking and locking employment records
Employment records (the relationship between a person and an organization) can be linked to external systems to ensure job data matches HR or payroll systems.
#### How employment locking works
Employments support **multiple external systems** - a single employment can be linked to several external systems simultaneously (e.g., both Payroll and HR systems).
**When importing employments**:
1. Map columns for person identifier, organization identifier, and job details
2. Select which external system(s) are the source
3. System creates or updates employment records
4. Employment is linked to the specified external system(s)
5. If any linked external system is locked, the employment becomes protected
#### Locked employment restrictions
When an employment is linked to a locked external system:
**Cannot Delete**:
* Delete button is hidden on employment records
* Prevents accidental removal of employment relationships
* Employment must be removed from external system first
**Cannot Terminate**:
* Termination button is hidden or disabled
* Termination dates can only be set via import
* Ensures termination is processed in HR/payroll system first
**Cannot Change Primary**:
* For projects with multiple employments, primary employment may be locked
* Prevents manual changes to which job is primary
* Primary status determined by external system logic
**Can View**:
* All employment details remain visible
* Job title, department, hire date, etc. are displayed
* Users can see which external system controls the employment
***
## Displaying external systems in search results
External system IDs can be displayed as columns in your search results, making it easy to find, reference, and sort by external system IDs.
### Adding external system columns to search
**Step 1: Access search layout configuration**
1. Go to your search results page by running a search
2. Look for the **Layout** dropdown menu just above the search results
3. Click and select "Modify layout"
**Step 2: Add external system columns**
1. In the available "Basic" column options, click "Unique IDs"
2. Arrange column in your preferred order
3. Apply or Save as new layout
The Unique IDs column will display all external system IDs (and the Broadstripes ID) for the record
***
## Using external system IDs in messaging
When "Available as merge token for email and text messages" is enabled for an external system, you can include external system ID values in bulk emails and text messages.
### Setting up external system merge tokens
**Step 1: Enable the feature**
1. Edit your external system
2. Check "Available as merge token for email and text messages"
3. Save the external system
**Step 2: Understand token format**
The merge token format is: `%system-name-id%`
**Conversion rules**:
* Convert spaces to hyphens
* Convert to lowercase
* Add `-id` suffix
**Examples**:
| External System Name | Merge Token |
| -------------------- | ---------------------- |
| Member | %member-id% |
| National Database | %national-database-id% |
| Payroll System | %payroll-system-id% |
### Using merge tokens in messages
#### In email templates
**Example 1: Membership Card Email**
```
Subject: Your Membership Information
Dear %name%,
Your membership ID is: %member-id%
Please reference this ID when:
- Calling the member services hotline
- Accessing your online account
- Requesting union representation
If you have questions, contact us at support@union.org
In solidarity,
%sender-name%
```
**Example 2: Benefits Enrollment**
```
Subject: Enroll in Health Benefits
Hi %first-name%,
You're eligible to enroll in health benefits!
Your Employee ID: %payroll-system-id%
Your Benefits ID: %benefits-system-id%
Visit benefits.example.com and enter your Benefits ID to enroll.
Enrollment deadline: November 30, 2025
```
#### In SMS/text messages
**Example 1: Reminder Text**
```
Hi %first-name%, this is Local 123. Your member ID is %member-id%. Reply with this ID to verify your identity for voting.
```
**Example 2: Appointment Confirmation**
```
Appointment confirmed for %first-name% %last-name% on 11/15 at 2pm. Bring your member card (ID: %member-id%). Reply YES to confirm.
```
**What happens if a recipient doesn't have an external system ID?**
Broadstripes handles this by replacing the token with a blank space if the person doesn't have the external system ID.
# General settings
Source: https://help.broadstripes.com/docs/project-settings/general-settings
**General settings** allow you to customize your Broadstripes project to match your organization's workflow. With general settings, you can select how you want certain key fields to be labeled, choose basic user permissions, and pick a default layout for displaying search results, among other things.
As an administrator, you can choose these settings just once, and they will be automatically applied across the project for all your users. Every setting on this page **saves automatically** the moment you change it -- there is no Save button. A brief "Saved" indicator appears next to each setting after it saves successfully.
On wider screens, the settings display in two balanced columns to make better use of the space.
Many settings include a help button next to the control. Clicking it opens a short explanation of what the setting does.
1. To get started, click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **General settings**. You can start typing to filter the list.
2. The **General settings page** will open, organized into cards: **Search results**, **Default contact types**, **Dashboard options**, **Basic user permissions**, **Visibility** (if your project has the limited visibility feature), **Data imports**, and **Language**.
### Default search layout
**Layouts** let you customize the appearance of the search results panel – the page that opens any time users run a search in Broadstripes. If your project has multiple organizers entering a lot of information, a good layout helps your users view and record information in the most effective way possible.
If you've [saved a layout](/docs/customize/save-a-layout/), you can select it as the default on the **General settings page**. Selecting a default search layout means that any time a user runs a search, the results will appear using the layout you've chosen. Users can also choose to create and save their own search results layouts, but by default, the layout you select in **General settings** will be used if no other layout is specified. Here's how:
1. Click the **Default search layout drop-down menu**.
2. Choose the layout you want from the list. (To learn about creating custom layouts, read the [save a layout](/docs/customize/save-a-layout/) article).
### Default sort
Sometimes a search brings back the contact records you need, but they're not displayed in a useful order. A custom sort lets you specify sort order (and even allows multi-tiered sorting), so your search results are easier to work with.
By default, Broadstripes will sort records alphabetically by first name, but from the **General settings page** you can specify a new default sort. After it's chosen, the default sort will be applied to search results any time your users run a search (unless they've specified another sort order). Here's how:
1. Click the **Modify default sort** button to open the sort editor dialog.
2. The **default sort editor** dialog will open.
3. Build your sort order:
* Click **+ Add a criterion** to add a field to the sort.
* **Drag and drop** criteria using the grip handle to change priority, or use the up/down arrow buttons.
* Click the sort-direction button on any criterion to toggle between ascending and descending order.
* Click the **X** button to remove a criterion. At least one criterion is required.
4. Click **Save** in the dialog to apply the new default sort.
### Default contact types
A contact type is a named record subtype with its own edit form setup. In the **Default contact types** card you can choose the type that new records get automatically:
* **Default for person records** is the contact type applied to newly created people. Leave it blank to use the plain **Person** type.
* **Default for organizations** is the contact type applied to newly created organizations. Leave it blank to use the plain **Organization** type.
### Additional column in turf panel
The turf panel is a page that shows users a summary view of the shops they are responsible for organizing by their location. The turf panel is viewable on the **Turf tab** of a user's **Project members** page.
From the **General settings page**, you can opt to add an additional column to all users' turf panels to display more information about the people they organize.
1. To start, click the **Additional column in turf panel** drop-down menu.
2. Choose from one of the given options:
* **None (hidden)** will leave the turf panel as it is, with no additional column.
* **Uncovered** calculates and displays how many workers in each shop or department are not counted as covered under your project's leader role coverage settings. A worker is uncovered if they do not hold a leader role that counts them as covered, and they are not following a leader whose role covers followers. Click the button in the **Uncovered** column header to see which of your project's leader roles affect this count.
* **Unassigned** calculates and displays how many workers in each shop or department have no leader assigned. Click the button in the **Unassigned** column header for a brief explanation of what counts.
3. After you've chosen this setting, users will automatically see the new column in the turf panel on their **Turf tab**. Each cell displays the count of workers meeting the condition as a large number, with the percentage of that shop's total workers shown below it. Clicking the count opens a list of all the individual contacts.
### Limited visibility and Temporary visibility
#### Limited visibility
Sometimes an organizing team will include activists or volunteers who aren't well-known to the team's leadership or who, for other reasons, simply shouldn't have full access to the project's data.
When this is the case, you can enable the **"Limited visibility"** toggle to turn on this feature in your project. (If you'd like to use limited visibility in your project, but don't see it in your **general settings**, contact Broadstripes support to have it activated for the project.)
When this feature is on, **project admins** can still see all the records in the project, but [basic users](/docs/start-project/user-and-membership-overview#user-roles) can only see the people and organizations that are made **"visible"** to them. If limited visibility is not on, all **basic users** in the project will be able to view all people and organizations.
Keep in mind that limited visibility is enabled on a **project-by-project** basis (if you have multiple projects, you can have limited visibility activated in some projects but leave it inactive in others.)
If you enable the **"Limited visibility"** feature in your project, you will also need to take [additional steps](/docs/project-settings/limited-visibility/) to define which shops or departments a **basic user** can see. The shops and departments you've assigned will appear in a list in the **"Visibility"** column of the member's row on the Members page. Learn all about defining what a user can see in the [Limited Visibility](/docs/project-settings/limited-visibility/) article.
**Data imports bypass limited visibility.** If any basic users already have the **Can perform data imports** permission when you enable limited visibility, Broadstripes will show you a warning listing those users before applying the change. You can choose to remove the data import permission from all of them at that time, or keep it and accept the risk that those users will be able to create and update records outside their visible scope.
#### Temporary visibility
If you've enabled limited visibility in your project, you'll also have the option of enabling **"Temporary visibility."**
**Temporary visibility** allows a **basic user** to search for a **person** who was not specifically made visible to them, and then **click to view that person's full record**.
The system will allow the user to temporarily view the entire record with no restrictions for the duration of their login session. Broadstripes will also **log** the request on the **Member index page**.
As admin, you can view these requests for temporary visibility on the **Members** page -- click the **Project settings** icon in the upper right corner of any page, then choose **Members**. Read step-by-step instructions on how to view the log of temporary requests in the [Temporary Visibility](/docs/project-settings/temporary-visibility/) article.
If you *don't* want to give **basic users** the ability to see records not specifically made visible to them, simply leave the **"Temporary visibility"** toggle off.
### Data imports can create multiple employments
Enable this toggle to allow multiple employments to be created during the import process.
### Basic user permissions
The majority of Broadstripes users are categorized as**basic users**, and with general settings, you can control a few important permissions for them. You can learn more about different types of users in the[User and Membership Overview](/docs/start-project/user-and-membership-overview/) article.
* **Create people** enable this toggle to allow basic users to add new person records to the project. When off, the "Create new person" link is hidden from the sidebar and mobile app for basic users, and any direct attempt to submit a new person record is blocked. This setting is enabled by default.
* **Create organizations** enable this toggle to allow basic users to add new organization (shop or department) records to the project. When off, the "Create new organization" link is hidden from the sidebar for basic users, and direct submission is blocked. This setting is enabled by default.
* **Delete contacts** enable this toggle to allow users the power to [permanently delete contacts records](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-delete-contacts/) from your project. Note that once a contact is deleted, it cannot be undone.
* **Manage quick links** enable this toggle if you want to allow users to [create a quick link](/docs/customize/create-a-quick-link/) on the **Quick link tab** of their **Homepage**. As an administrator, you can set up users' quick links for them whether or not this is on.
* **Save and delete shared objects** enable this toggle to allow basic users to share saved searches, layouts, and sorts with the whole project, and to rename or delete the shared ones they created. When off, basic users can still use shared objects created by others but cannot share new ones or modify existing shared ones. This setting is enabled by default.
* **Modify a record's contact type** enable this toggle to allow users to modify the contact type of a record.
* **See the change history viewer** enable this toggle to allow users to view the change history viewer on the Recent changes tab instead of a basic view.
* **See changes to records outside their visibility made by users in their visibility**
### Language settings
Different organizations use different language for talking about their work. **Language settings** let you specify how you want certain key fields to be labeled in your project.
* **Use "Assessment" instead of "Code"** Broadstripes allows you to assign each worker a numeric level of support for organizing (usually 1-5). Enable this toggle if you prefer your project to use the label "Assessment" instead of "Code" wherever a worker's level of support is shown.
* **Use "Job Title" instead of "Classification"** Broadstripes lets you record any worker's employment within a tiered structure. Commonly, the upper tiers are labeled "Employer, Department, and Subdepartment," and the lowest tier can be labeled either "Job Title" or "Classification" depending on your choice here.
# Job titles/Classifications
Source: https://help.broadstripes.com/docs/project-settings/job-titles-settings
View, rename, merge, and delete your project's job titles (or classifications) from the Classifications dialog.
### Manage the job titles (also called classifications) you have created for your project.
What's the difference between "Job titles" and "Classifications"?
To give a short answer -- nothing! "Job title" and "Classification" refer to the exact same piece of employment information in Broadstripes; it's just a matter of how it is labeled. In fact, you may use "Job title" in one Broadstripes project and "Classification" in another.
You can change this label at any time in your [General Settings](./general-settings).
For this article, we'll be referring to "Job titles," but if your project uses Classifications instead, just substitute "Classification" wherever "Job title" is mentioned.
## Open the Job titles dialog
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**).
2. In the **Project settings** menu, click **Job titles** (or **Classifications**) under the **Customization** group. You can start typing to filter the list.
3. The **Job titles** dialog opens, showing a table of all job titles in your project -- including those used by current employments, terminated employments, and any titles that were once assigned but are no longer linked to any employment.
The table includes the following columns:
| Column | Description |
| -------------- | -------------------------------------------------------------------------------------------------- |
| **Name** | The job title name. Click the name (or the pencil icon) to rename it inline. |
| **Current** | Number of active employments using this title. Click the count to open a search for those workers. |
| **Terminated** | Number of terminated employments that used this title. |
| **Creator** | The user who created the title, linked to their person page when accessible. |
| **Created** | The date the title was first created. |
You can click any column header to sort by that column. Click again to reverse the sort order.
## Filter the list
Type in the **Search** field at the top of the dialog to filter the table by job title name or creator name.
## Rename a job title
1. In the **Job titles** dialog, click the **pencil** icon next to the name you want to rename (or double-click the name itself). The name becomes an editable text field.
2. Type the new name and press **Enter** (or click elsewhere) to save. Press **Escape** to cancel without saving.
If the new name matches an existing job title, Broadstripes will offer to merge the two titles together. See [Merge job titles](#merge-job-titles) below for what happens next.
## Merge job titles
Merging combines two or more job titles into one, and automatically re-assigns any affected current and terminated employments to the surviving title.
### Merge by renaming into an existing title
When you rename a job title to a name that already exists, Broadstripes detects the conflict and asks whether you want to merge. Confirm to proceed; the renamed title is removed and its employments are moved to the existing one.
### Merge selected titles
1. Check the box next to each job title you want to merge (select at least two).
2. Click **Merge (n)** in the toolbar that appears above the table.
3. In the **Merge** dialog, choose which title to keep as the survivor -- Broadstripes pre-selects the most-used one -- or type a new name for the merged title.
4. Click **Merge** to confirm. All selected titles are combined into the survivor, and all employments are updated automatically.
## Delete job titles
Deleting a job title does not remove it from existing employment records -- it removes the title entry from the project. All employments currently using a deleted title will lose that assignment.
### Delete a single job title
In the job titles table, click the **trash** icon on the row you want to remove. Confirm the deletion when prompted.
### Delete multiple job titles
1. Check the boxes next to the job titles you want to delete.
2. Click **Delete (n)** in the toolbar above the table.
3. Confirm the bulk deletion when prompted.
## Download as CSV
To export the full list of job titles, click **Download CSV** at the bottom of the dialog. The file includes every title and its current and terminated employment counts.
# Leader roles
Source: https://help.broadstripes.com/docs/project-settings/leader-roles
Whether your project is designed for internal, external, or community organizing, your users probably have a need to identify the leaders within the bargaining unit or worker group. As an administrator, you can easily view, edit or define new leadership roles for your Broadstripes project with **leader roles**.
1. To get started, you can access **leader roles** in one of two ways: Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Leader roles**.
2. Or, from the **Project settings page**, click the **Customization > Leader roles** link.
3. The **Leader roles index page** will open, displaying all of the roles you have set up. You can view and manage your project's leader roles from this page.
4. If you haven't yet set up any roles, your index page will open with a button to create a **+ New Leader Role.**
5. Instructions on how to edit, delete, or create new leader roles, are covered in detail in the [leadership roles](/docs/admin-guides/data-tools/leadership-roles/) article.
# Limited visibility
Source: https://help.broadstripes.com/docs/project-settings/limited-visibility
## Overview
Sometimes an organizing team will include activists or volunteers who aren't well-known to the team's leadership or who, for other reasons, simply shouldn't have full access to the project's data. When this is the case, you can turn on Broadstripes' **"Limited Visibility"** feature in your project.
When the limited visibility feature is **"on"**, project admins can still see all the records in the project, but **basic users** can only see the people and organizations you make **"visible"** to them. This article covers managing basic users' visibility settings. If you'd like to learn how to turn on the limited visibility feature or the [temporary visibility](/docs/project-settings/temporary-visibility), check out the [general settings](/docs/project-settings/general-settings) article.
## View your basic users' limited visibility settings
1. To get started, access **Memberships.**\
Click the gear icon in the upper right corner of any page, then select **Members**.\\
2. The **Members index page** will open, showing all of the people who have been invited to be part of your Broadstripes project.
3. From the index page, you can see a range of information about each member (or invited member) laid out in a grid. We'll be looking at just a few of the first columns:
* **Name** of the member. Visibility is defined individually for each member.
* **Role** of the member. Limited visibility only applies to the **Basic user** role; see the [user and membership overview](/docs/start-project/user-and-membership-overview) section of the Users and Membership article to learn how to assign or re-assign roles.
* **Visibility** the shops, departments, sub-departments and/or people visible to the member in that row. This column is only shown if you have turned on the **"Limited Visibility"** feature in your project (see the Limited Visibility section of the [general settings](/docs/project-settings/general-settings) article for more information about turning on this feature).
* If you're interested in learning about the **"Temporary vis. (past 2 wks)"** column, please read the [temporary visibility](/docs/project-settings/temporary-visibility)
## Assign limited visibility: define what each basic user can see
By default, no shops or people will be visible to a basic user when limited visibility is on. **Limited visibility** controls the organizations and people **"visible"** to basic users.
Limited visibility is assigned:
* on a **project-by-project** basis (if you have multiple projects, you can have limited visibility activated in some projects but leave it inactive in others. If limited visibility is not activated, all basic users in the project will be able to view all people)
* within a project, visibility is assigned on a **user-by-user** basis (for projects where limited visibility has been activated, you'll need to assign what is visible to each user individually)
What determines visibility? On the **Memberships page** for the project, admins can define what a basic user can see in two ways:
* [Visibility by shop and department](#visibility-by-shop-and-department)
* [Visibility by custom search](#visibility-by-custom-search)
### Visibility by shop and department
The **simplest way** an admin can define what a user sees is by assigning them specific **shops** or **departments**.
**Visibility will be inherited by sub-departments**
Keep in mind that when you assign visibility to a shop that has **departments** or **sub-departments** under it, the visibility will cascade down to include all those entities below it.
**Example:**\
A basic user is assigned **"Big Shop."** This means the user will see the organization record for **Big Shop** itself, all of the records for all of Big Shop's **departments** and **sub-departments**, and all the **people** who work anywhere within Big Shop.
If the user is not assigned Big Shop, but only **"Department A"** inside Big Shop, they will see **Department A**, any **sub-departments**, and the **people** who work anywhere within Department A and its sub-departments. They will not see **"Department B"** or **"Department C"** or anyone who works there.
As an admin, you can assign as many shops or departments as you want to be visible to a user. The shops and departments you've assigned will appear in a list in the **"Visibility" column** of the member's row in the **Memberships table**.
### How to assign visibility by shop, department or sub-department
1. From the **Members index page**, find the member whose visibility you are assigning.
2. Click the **edit icon** in the **Visibility** column for that member.\\
3. The **Edit visibility** panel will open. In the **Shops and departments** section, you can select which organizational units this user should be able to see.
4. Use the dropdown menus or search functionality to add shops, departments, or sub-departments.
5. Click **Save** to apply the visibility settings.
### Visibility by custom search
For more complex visibility requirements, you can define what a user sees using search criteria. This allows you to create dynamic visibility rules based on contact attributes, employment information, or other data fields.
1. From the **Edit visibility** panel, go to the **By search** tab.
2. Enter search criteria using Broadstripes search syntax to define which records this user should see.
3. Test your search to ensure it returns the expected results.
4. Click **Save** to apply the search-based visibility settings.
**Search text tip: Use Broadstripes' search builder**
Building a limited visibility search is a little different from using Broadstripes' search builder because you need to write the search using text only. You can build your search in the search builder first, then copy the search text to use in visibility settings.
If you need more help on building searches like this, the [broadstripes search reference v1.0.pdf](https://crm.broadstripes.com/broadstripes-search-reference-v1.0.pdf) explains Broadstripes' **search terms** and **syntax** and lists some of the most common fields used in searches along with examples of searches you are likely to use. You can also learn more about building searches that use AND/OR clauses in the [search builder build an advanced search](/docs/search/search-builder-build-an-advanced-search) article.
# Tags, Custom fields & Events
Source: https://help.broadstripes.com/docs/project-settings/lists-custom-fields-events
This article covers how to work with the project settings **Tags**, **Custom fields** and **Events.**
## Overview
**Tags**, **Custom fields** and **Events** are all tools to help you collect and share info about the contacts you're organizing, but they vary in their approach.
**Custom fields** store permanent data about a person (like shift, interests, or job details) using various data types (text, dates, checkboxes, dropdowns). They're directly associated with the contact record.
**Tags** are flexible grouping tools for tracking people you want to follow for any reason (like key volunteers or follow-up targets) - to use these you just add or remove people from the tags you create.
**Events** are a tracking tool that uses one or more checkboxes to record information about a contact that's important to your work. This could be a to record a yes/no response or track participation in single or multi-step activities (for a campaign, this might mean recording meeting attendance over a period of time, or following a process like receiving a signed card, filing it, and emailng a copy to the NLRB for certification).
To get started with any of these settings, click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**). You can start typing to filter the list. Then choose the setting you want.
**Saved searches**, **Tags**, and **Events** are accessible from the **Project settings** menu to all users. **Custom fields** and the remaining Customization items are visible to project administrators only.
### Tags
Tags give users an easy way to manually group people they want to track -- for instance, their most dedicated volunteers or the people they consider their top targets.
Clicking the **Tags** link from the Project settings page will open the **Tags page** where you can view and make changes to your tags. Since tags are created not just by administrators, but by individual users, you will see only the tags you have created, and those that have been shared with you.
To learn more about creating, editing, sharing and deleting tags, read the [Tags](/docs/admin-guides/data-tools/tag-lists) section of the knowledge base.
### Custom fields
As you probably know, **custom fields** are special fields an administrator can create to hold data that can't logically be mapped to one of Broadstripes' built-in fields. Specifically, custom fields contain data that is *permanently* relevant about the worker (such as "Shift" and "Issues of Concern"), while **Events**, another type of user-defined field, capture particular actions in the workflow of a given campaign activity.
Clicking the **Custom fields** link from the Project settings page will open the **Custom fields index page** where you can view and manage all of the project's custom fields. You can also open this page from the **Project settings** menu:
To learn more about creating, editing, and deleting custom fields, read the [custom fields](/docs/admin-guides/data-tools/custom-fields/) section of the knowledge base.
### Events
Like custom fields, **events** are customizable fields that allow you to track information that is specific to the way you do your organizing. Unlike custom fields, events can be set up to include multiple components or "steps," making them a useful tool for tracking the specific actions your users need to complete during the course of a campaign.
Clicking the **Events** link from the Project settings page will open the **Events index page** where you can view and manage all of your project's events and event steps.
To learn more about **creating, editing, deactivating,** and **deleting** events, read the [creating an event](/docs/admin-guides/data-tools/creating-an-event/) section of the knowledge base.
# Project members
Source: https://help.broadstripes.com/docs/project-settings/members-settings
See details about your **members** – the users who have been invited to have a role in your project.
## View your project's users
1. To get started, you can access **Members settings** in one of two ways:\
Click the gear icon in the upper right corner of any page, then select **Members**.
Or, from the **Project settings page**, click the **Membership and activity > Members** link.
2. The **Members index page** will open, showing all of the people who have been invited to be part of your Broadstripes project.
3. From the index page, you can see a range of information about each member (or invited member):
* **Name**, **Email address**, and **Role** of the member (see the [Edit user](/docs/start-project/user-and-membership-overview/) section of the Users and Membership article for more details on specific roles).
* **Visibility (optional)** – this column is only shown if you have enabled the "Limited visibility" feature in your project. If Limited visibility is enabled, this column lists the shops and departments you've assigned (or made "visible") to each member (see the [Limited visibility article](/docs/project-settings/limited-visibility/) for more information about enabling and configuring this feature)
* **Temporary vis. (past 2 wks)** **(optional)** – this column is only shown if you have enabled both the "Limited visibility" and "Temporary visibility" features in your project. If these are enabled, this column lists the people this member has requested to view temporarily in the past two weeks (see the [temporary visibility article](/docs/project-settings/temporary-visibility/) for more information about enabling this feature and how it works)
* **Invited By** – the name of the user who invited the member to join the project
* **Created At** – the date they were invited
* **Permissions** – the specific permissions the member was granted
* **edit permissions** – you can change a project member's permissions by clicking the **edit permissions** link (see the [Edit user permissions](/docs/start-project/user-and-membership-overview/) section of the Users and Membership article for more details on setting permissions).
* **Membership** – the status of the member, shown as a badge:
* **Active** – the member has accepted their invitation and has an active account.
* **Invited** – the member has been sent an invitation but has not yet accepted it. This badge also appears when the invitation has expired and a new one needs to be sent.
* **Deactivated** – the member's access has been removed.
* **Invitation** – shown in the Actions column next to each invited member, this area displays invitation-related controls and status:
* **Expires on \[date]** – shown in amber for members whose invitation is still pending, so you know when the link will stop working.
* **Expired** – shown in red when the invitation link has passed its expiry date. You can re-send a fresh invitation to the member.
* **Accepted** – shown in gray for members who have already accepted their invitation.
* **Re-send** – click this button to send a new invitation email to a pending or expired member. A fresh invitation link replaces the old one.
* **Cancel** – click this button to cancel a pending or expired invitation and remove the member from the project.
* **Member actions menu** – click the ellipsis icon at the end of any member row to open a dropdown menu with all actions available for that member: Deactivate, Reactivate, Re-send invitation, Cancel invitation, Break link to person, and Edit permissions.
## Invite new users
You can invite new people to join your project by clicking on the **Invite member tab**.
See the [Add and invite a new user](/docs/start-project/user-and-membership-overview/)section of the Users and Membership article for step-by-step instructions on adding new members to your project.
# Outgoing email settings
Source: https://help.broadstripes.com/docs/project-settings/outgoing-email-settings
Broadstripes allows you to set your project's outgoing email settings and designate a default outgoing email address when sending correspondence from Broadstripes. This will be available for users on the bulk email panel in the From dropdown menu and will be the email from which Public forms will be sent.
You can easily add/edit your outgoing email settings from the Project settings menu in the top right corner of the app. Here's how:
Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Email settings**.
On the Outgoing Email Settings page, you may create the following properties for your project:
## **Outgoing email addresses**
Project admins may validate default email addresses for general use in the project. The domain of the emails that are used must be authenticated with our email provider. To authenticate your domain or for more information, please reach out to [support@broadstripes.com](mailto:support@broadstripes.com)
## **Universal BCC addresses**
Email addresses added as a Universal BCC address will receive copies of emails sent from the project that exceed the specified recipient threshold. These BCCs will not be reflected in the recipient count.
## **Email Content**
* **Public-facing project name** (how the name of your project will appear to the recipient)
* **USPS mailing address for email footer** (It is good practice to include your mailing address to avoid being flagged as spam in recipients' inbox)
* **Email unsubscribe message** (Optional: customize the unsubscribe message for emails sent from the project.)
* **Email Footer HTML** (Optional, project-specific HTML inserted in the email footer to meet special compliance requirements)
Once you have defined your settings as needed, be sure to click **Save**.
# Project settings overview
Source: https://help.broadstripes.com/docs/project-settings/project-settings-overview
## Intro
As the admin of your Broadstripes project, you may find that you have a lot of information you want to keep track of – data imports, custom fields, report formats, and user permissions, just to name a few. Thankfully, Broadstripes provides the tools you need to make your job more simple.
One tool you should know about is the **Project settings page** – a single access point for all of your admin tools.
To access your project settings, click the **Project settings** button in the upper-right navigation bar, or press **Cmd+K** (Mac) or **Ctrl+K** (Windows/Linux). A searchable command menu opens listing all settings pages available to you. Type to search by name, or scroll through the grouped list. A **Recently used** section at the top shows the settings pages you visit most often.
A footer toggle lets you set whether settings pages open in a new tab or the current tab by default. You can also control tab behavior for individual items without changing the toggle:
* **Hover** over any row to reveal an arrow button at the right edge. Click it to open just that page in a new tab, leaving the toggle unchanged.
* **Hold Cmd** (Mac) or **Ctrl** (Windows/Linux) while selecting an item to invert the toggle for that one selection: if the toggle is off, the item opens in a new tab; if the toggle is on, it opens in the current tab.
To open the full **Project settings page**, select **All project settings** from the menu.
When the **Project settings page** opens, you'll see a list of all your project settings in one convenient place. From there, just click a link to view or modify that setting.
Your **Project settings page** may look slightly different depending on the features you have enabled for your project.
## Project settings
Click any project settings topic below to get an in-depth description:
### Customization
[General settings](/docs/project-settings/general-settings/)\
[Saved searches](/docs/search/save-and-share-searches#manage-all-saved-searches)\
[Tags](/docs/project-settings/lists-custom-fields-events)\
[Custom fields](/docs/project-settings/lists-custom-fields-events/)\
[Events](/docs/project-settings/lists-custom-fields-events/)\
[Assessments/Codes](/docs/project-settings/assessment-settings/)\
[Leader roles](/docs/project-settings/leader-roles/)\
[External systems settings](/docs/project-settings/external-systems-settings/)\
[Job titles settings](/docs/project-settings/job-titles-settings/)\
[Timeline item types](/docs/project-settings/timeline-item-types)
### Membership and activity
[Members settings](/docs/project-settings/members-settings/)\
[User group settings](/docs/project-settings/user-group-settings/)\
Deleted people\
Bulk task list
### Data import
[Data imports](/docs/project-settings/data-imports-settings)\
[Automated import configurations](/api/automated-import-configuration)
### Reports
[Status report definitions](/docs/project-settings/status-report-definitions/)\
[Custom house visit questions](/docs/project-settings/custom-house-visit-questions/)\
[Spreadsheet template reports](/docs/lists-reports/spreadsheet-template-reports)
### Email and SMS
[Email settings](/docs/project-settings/outgoing-email-settings/)\
[Email templates](/docs/communications/creating-email-templates)\
Sent email\
[Text messages](/docs/communications/text-messaging)\
[SMS numbers](/docs/communications/provisioning-a-virtual-sms-number)\
[SMS templates](/docs/communications/sms-message-templates)\
MMS media
### Call Center
[Call pools](/docs/admin-guides/call-center/using-call-pools)\
[Scripts](/docs/admin-guides/call-center/creating-call-center-script)\
Callers\
Locks\
Call Center settings
### Maps and shapes
[Upload shape file](/docs/maps/uploading-shape-files)\
Copy shape groups
### Advanced features
[Calculated columns settings](/docs/project-settings/calculated-columns-settings/)\
Contact types\
[Public forms](/docs/admin-guides/public-forms/public-forms-overview)\
[Submitted public forms](/docs/admin-guides/public-forms/viewing-and-downloading-public-forms)\
[Bouncing emails](/docs/admin-guides/public-forms/bouncing-emails)
# Status report definitions
Source: https://help.broadstripes.com/docs/project-settings/status-report-definitions
**Status reports** allow you to create snapshots of your campaign progress for others to review.
With status reports, you can select what information to display and quantify, what shops to include in your report, and customize the layout of your report. Once you have created a status report, you can save it, edit it, and re-run it in the future to reflect your continued progress.
Status reports are a big topic; visit the [Status Reports section](/docs/lists-reports/status-reports-overview) to learn more about how to create, edit, and work effectively with status reports.
Status report definitions can be reached from any page: click the **Project settings** icon in the upper right corner (or press **Ctrl-K** / **⌘K**), then choose **Status report definitions**.
# Temporary visibility
Source: https://help.broadstripes.com/docs/project-settings/temporary-visibility
Learn how temporary visibility lets basic users give themselves short-term access to additional records in your Broadstripes project.
## Overview
Temporary visibility is a feature that lets basic users give themselves short-term access to records they wouldn't normally be able to see under the limited visibility settings. This is useful for specific campaigns, events, or time-limited organizing activities.
## How Temporary Visibility Works
When temporary visibility is enabled:
* Basic users can add records to their own view for the remainder of their login session
* Access lasts until the user signs in again, at which point their visibility is rebuilt and the temporary records drop off
* Administrators can see which people each user has requested
* The feature works alongside regular limited visibility settings
**Temporary vs. Limited Visibility**
Temporary visibility is an extension of the limited visibility feature. You must have limited visibility enabled in your project before you can use temporary visibility settings.
## Setting Up Temporary Visibility
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**)
2. Choose **General settings**
3. Enable the **Temporary Visibility** feature undered the **Limited visibility** checkbox.
## How Basic Users Get Temporary Access
Administrators don't hand out temporary access. A basic user requests it for themselves, at the moment they need it:
1. The user searches for a person who falls outside their limited visibility
2. The name appears in the search suggestions with a plus icon, marking a record they can't currently see
3. When the user selects that name, Broadstripes asks them to confirm: "Temporarily add access to see \[name] for the remainder of your login session?"
4. If they confirm, the record becomes visible to them and their search runs
**Access Ends at the Next Sign-in**
Temporary access lasts only for the remainder of the user's login session. The next time they sign in, Broadstripes rebuilds their visibility and the temporary records drop off. There is no duration to configure and no notification when access ends.
## Reviewing Temporary Access
Administrators can't grant, extend, or revoke temporary access, but they can see how it's being used. On the **Members** page, the **Temporary visibility** column shows how many people each member has requested in total, followed by the number requested in the past two weeks in parentheses. Click the count to open that member's request history, which lists each contact requested, their primary employer, whether the access is still active, and when it was added.
For more information on visibility settings, see [Limited Visibility](/docs/project-settings/limited-visibility) and [General Settings](/docs/project-settings/general-settings).
# Timeline item types
Source: https://help.broadstripes.com/docs/project-settings/timeline-item-types
Learn how to create, manage, and filter timeline types to organize your contact timeline
## Overview
A contact timeline is a perpetual history of notes, events, conversations, and interactions with a contact. The timeline will record and display emails, text messages, changes in assessments, and other important subjects. A timeline item provides details on the occurrence, including when the event occurred, who created the item, who contacted the person, and a description.
Over time, a contact timeline may become lengthy with information and events that have transpired. Timeline types allow you to organize your data on your contact timeline. This will also allow you to filter timeline types on your search results page for easier data location.
You may create additional timeline types beyond the default types provided by Broadstripes to record interactions and events that are important to your project.
By default, the following timeline types are already defined and enabled for you:
* Note
* Code Change (Assessment Change)
* Event Change
* Email
* Group Meeting
* House Visit
* One-on-one
* Phone Call
* SMS Message
There will be times when you want to record an interaction or create a note that doesn't fit within those predefined categories, like a special meeting or a blitz event. For those instances, you can create a new timeline item type that better categorizes the interaction. Here's how:
## Creating a timeline type
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**) and choose **All project settings**.
2. Under the **Customization** section of Project settings, select **Timeline item types**.
3. Select the **+ New** button and a new timeline item type will appear.
4. Name your new timeline item type. For this example, we will create an "Information Session" timeline item type.
5. You can drag and drop to reorder the position of the item in your project's timeline type dropdown menu. (It's helpful to place frequently used timeline types toward the top of the menu.)
Now that you have a new timeline type created, you may go ahead and use it for any of your entries on your contact timeline.
## Deleting a timeline type
If you or your project members do not use a particular timeline type, you may delete that one. This will keep your timeline types menu concise and consistent.
1. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**) and choose **All project settings**.
2. Under the **Customization** section of Project settings, select **Timeline item types**.
3. Click **x delete** in the corresponding row of the timeline type that you want to remove from the project. You will be prompted to confirm your choice to delete via popup. Click **OK**.
There are a few instances in which you cannot delete a timeline type. If a timeline type has a timeline item associated with a contact, the timeline type cannot be removed. In addition, Note, Code Change, and Event Change are system defaults and may not be removed.
## Filtering timeline types in search results
The contact timeline column in your search results can be filtered by timeframe and by item type.
1. To filter, select the funnel in the top right corner of the contact timeline column.
2. A panel will appear with two sections:
* **Display timeframe** -- Click one of the segmented buttons (All, 1w, 2w, 1m, 3m, 6m, 1y) to limit the timeline to a specific lookback window. The caption below the buttons confirms your selection in plain language (for example, "Items from the past three months").
* **Item types** -- Check or uncheck each timeline type to control which types appear. Use the **All** and **None** links to select or deselect everything at once.
3. Click **Apply** to update the timeline column.
Your search results will now only display the timeline types and timeframe that you selected.
# User groups
Source: https://help.broadstripes.com/docs/project-settings/user-group-settings
User groups allow you to pull users together into small groups to simplify sharing and communication tasks.
1. To get started, click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **All project settings**.
2. From the **Project settings page**, click the **Membership and activity > User groups** link.
3. The **User groups index page** will open listing all of the existing user groups in your project.
4. From this page, you can:
* See basic information about existing user groups like how many users they contain, who created them, and when.
* Click the links to **edit** or **delete** your existing user groups.
* Create a new group by clicking the **+ New User Group** button in the upper-right corner of the page.
# Add rule groups to your search
Source: https://help.broadstripes.com/docs/search/add-rule-groups-to-your-search
Learn how to use rule groups in the Broadstripes search builder to create complex searches with AND/OR logic between groups of rules.
## Overview
You may remember that we built a [multiple-rule search](/docs/search/search-with-multiple-rules/) for "people who are leaders at Big Shop" in a previous help article. Imagine that you now need a similar search that will find leaders at either "Big Shop" or "Small Shop".
The rules in this search might be stated this way:
> **Find people who...**
>
> 1. have a leadership role
> **AND**
> 2. work at Big Shop **OR** work at Small Shop
> Rule #1 is easy (it's the same as in the earlier [multiple rule search](/docs/search/search-with-multiple-rules/) article), but rule #2 is really a clause composed of two rules about two different shops. Broadstripes calls such a clause a "group".
> Learn how to build a search with a group in this video:
## Video: Add rule groups to your search
## Build a search with groups (clauses)
1. To get started, click the **Search Builder** button in the search bar at the top of the page.
2. A **search builder** panel will appear below the search box.
3. We'll start by creating our three rules first and construct the group last.
4. The search builder panel automatically creates a rule as it's opened. Initially, the panel will offer to search by **Employer (in or below)**, but we'll change that for our first rule.
5. To search for leaders, we'll select "**Leadership role**" from the drop-down list on the left just as we did in the [Search with multiple rules](/docs/search/search-with-multiple-rules/) article.
6. In the **middle drop-down box**, we'll choose "**has any value**" to see everyone with a leadership role.
7. Next, we need to add our second rule, filtering the results to show leaders at "**Big Shop**." (We'll add a rule to see leaders at "**Small Shop**" next).
8. We'll add the second rule by clicking the **+Add rule** button in the upper right corner of the search builder.
9. We'll specify that for this rule **Employer (in or below)** should contain the words "**Big Shop**."
10. Next, we'll add our third rule by clicking the **+Add rule** button again.
11. We'll specify that we'd also like to see records where **Employer (in or below)** contains the words "**Small Shop**."
12. Now we need to **create a group** for our rules about employment since we want Broadstripes to search for people who are leaders at *either* "Big Shop" or "Small Shop" (not both).
13. To create a new group, click the **+ Add group** button in the upper right corner of the search builder. The search builder allows you to add groups wherever you want. (You can even add groups within groups, but let's not go there right now.)
14. You'll notice that the new group starts out empty, showing "No rules yet. Add a rule to get started." We'll fill it with our two employment rules in the next steps.
The new group is empty until you put rules in it.
15. Now let's build the group.
16. One at a time, **drag and drop** the two employment rules into the new group.
**Click** near the double-ended arrow icon and hold the mouse down to select a rule.**Drag** and drop the two employment rules into the new group.
17. Once you've moved both rules into the group, your search panel will look like this:
18. We're almost done, but before running the search, we need to check our boolean operators.
Boolean operators are used in searches to connect and define the relationship between search rules. Broadstripes uses two Boolean operators: AND and OR.
Use "**AND**" to run a search where *all* of the rules are true. Use "**OR**" to run a search where *at least one* of the rules is true.
19. Since our search depends on people being employed at either "Big Shop" OR "Small Shop" AND having a leadership role, we need our operators to match that.
Above the leadership rule, leave "**AND**" selected. Click "**OR**" in the top left corner of the employment rules group to toggle it on (a highlighted background indicates that it's selected).
Your completed search will look like this:
20\. Finally, click the **Search** button to run your search.
21\. Everyone with a leadership role at either Big Shop or Small Shop will appear in the **Search Results**.
## Learn more
Want to go back to the basics and learn about simple searches or searching with just one or two rules? Check out these articles:
* [Build an advanced search with the search builder](/docs/search/search-builder-build-an-advanced-search/)
* [Search with multiple rules](/docs/search/search-with-multiple-rules/)
# Using a multi-value search
Source: https://help.broadstripes.com/docs/search/creating-multi-value-search
The Multi-value Search feature in Broadstripes CRM allows you to search for multiple values in a single field using a special parentheses syntax. Instead of creating separate search rules for each value, you can combine them into one efficient search statement.
**Key benefits:**
* Search for multiple values at once
* Cleaner, more concise search queries
* Faster than creating multiple individual search rules
* Works with any searchable field
***
## Basic syntax
The multi-value search uses **parentheses with comma-separated values**:
```
field=operator(value1, value2, value3)
```
### Components:
* **field**: Any searchable field name (e.g., `city`, `state`, `employer`, `name`)
* **operator**: Standard search operators (`=`, `:`, `==`, `!=`, `!:`, `!==`)
* **parentheses**: Wrap your list of values in `(` and `)`
* **commas**: Separate each value with a comma
**Multi-word values must be wrapped in quotes.**
`membertype = ("Active Member", "Retired Member", "Non-Member")`
is equivalent to
`membertype = "Active Member" OR membertype = "Retired Member" OR membertype = "Non-Member"`
***
## Traditional 'OR' search vs multi-value search
**Traditional approach**
To find contacts in multiple cities, you'd create multiple rules:
```
city=Boston OR city=Cambridge OR city=Somerville OR city=Medford OR city=Malden
```
**Multi-value approach**
Much simpler and cleaner:
```
city=(Boston, Cambridge, Somerville, Medford, Malden)
```
**Benefits of multi-value:**
* ✓ Shorter, more readable queries
* ✓ Easier to modify (add/remove values)
* ✓ Less prone to syntax errors
***
## How it works: OR vs AND logic
The behavior of multi-value search depends on the operator you use:
**Positive operators → OR logic**
When using positive operators (`=`, `:`, `==`), values are combined with **OR** logic:
```
city=(Boston, Cambridge, Somerville)
```
**Meaning:** Find records where city equals Boston **OR** Cambridge **OR** Somerville
**Negative operators → AND logic**
When using negative operators (`!=`, `!:`, `!==`), values are combined with **AND** logic:
```
city!=(Boston, Cambridge, Somerville)
```
**Meaning:** Find records where city is NOT Boston **AND** NOT Cambridge **AND** NOT Somerville
***
## Basic examples
**Example 1: Search multiple cities**
Find contacts in Boston, New York, or Chicago:
```
city=(Boston, "New York", Chicago)
```
**Example 2: Search multiple states**
Find contacts in Connecticut or Massachusetts:
```
state=(CT, MA)
```
**Example 3: Search multiple employers**
Find contacts working at specific companies:
```
employer=(Acme, Globex, Initech)
```
**Example 4: Exclude multiple values**
Find contacts NOT in certain cities:
```
city!=(Boston, Cambridge)
```
**Example 5: Search by multiple names**
Find specific people:
```
name=(John Smith, Jane Doe, Bob Johnson)
```
***
## Handling values with commas
If a value itself contains commas (like company names or addresses), wrap it in **quotes**:
```
employer=("Dewey, Cheetham, and Howe", "Smith, Jones & Associates", Acme)
```
**How it works:**
* Values inside quotes are treated as a single value
* Only commas outside quotes separate values
* Use double quotes `"` to wrap values
More examples:
```
# Company names with commas
employer=("ABC, Inc.", "XYZ Corporation", "123 Industries, LLC")
# Addresses with commas
address=("123 Main St, Suite 100", "456 Oak Ave, Floor 2")
# Names with commas (Last, First format)
name=("Smith, John", "Doe, Jane", "Johnson, Bob")
```
***
## Advanced use cases
**Combining with other search rules**
Multi-value search works seamlessly with other search criteria using AND/OR logic:
**Example:** Find contacts in multiple cities AND working at specific employers:
```
city=(Boston, Cambridge) employer=(Acme, Globex)
```
**Example:** Find contacts in multiple states OR with specific job titles:
```
state=(MA, CT) OR title=(Manager, Director)
```
**Nested searches with subqueries**
You can combine multi-value syntax with subqueries using square brackets:
```
employer=[state=(CT, MA, RI)]
```
**Meaning:** Find contacts whose employer's state is Connecticut, Massachusetts, or Rhode Island
**Complex organization searches**
```
employer=("Acme Corporation", "Globex Industries", "Initech, LLC")
employer.city=(Boston, Cambridge, Somerville)
```
**Meaning:** Find contacts at those specific companies located in those cities
***
## Real-world scenarios
**Scenario 1: Regional sales team**
Find all contacts in New England states:
```
state=(MA, CT, RI, NH, VT, ME)
```
**Scenario 2: Multiple account managers**
Find contacts assigned to specific account managers:
```
account_manager=(John Smith, Jane Doe, Bob Wilson)
```
**Scenario 3: Event participation**
Find contacts who attended specific events:
```
memberactivity=(Summer Conference, Fall Meetup, Winter Summit)
```
**Scenario 4: Exclude test data**
Exclude contacts from test companies:
```
employer!=(Test Company, Demo Corp, Sample Inc)
```
**Scenario 5: Metropolitan area search**
Find contacts in a metro area with multiple city names:
```
city=(Boston, Brookline, Cambridge, Somerville, Medford, Malden)
```
**Scenario 6: Industry-specific search**
Find contacts in specific industries:
```
industry=(Technology, Software, IT Services, Computer Hardware)
```
***
## Common pitfalls
**❌ Forgetting quotes for values with commas**
```
✗ employer=(Smith, Jones & Associates, Acme)
# Will be split into 3 values: "Smith", "Jones & Associates", "Acme"
✓ employer=("Smith, Jones & Associates", Acme)
# Correctly creates 2 values
```
**❌ Mixing up OR and AND logic**
```
# This finds contacts in Boston OR Cambridge
city=(Boston, Cambridge)
# This finds contacts NOT in Boston AND NOT in Cambridge
city!=(Boston, Cambridge)
# If you want "NOT in Boston OR NOT in Cambridge", you need:
city!=Boston OR city!=Cambridge
```
***
## Quick reference
### Syntax cheat sheet
```
# Basic multi-value (OR logic)
field=(value1, value2, value3)
# Negated multi-value (AND logic)
field!=(value1, value2, value3)
# With quoted values
field=("value with, comma", value2, "value with spaces")
# Contains operator
field:(value1, value2)
# Exact match operator
field==(value1, value2)
# Not contains
field!:(value1, value2)
```
### Operator reference
| Operator | Logic | Example | Meaning |
| -------- | ----- | --------------------------- | ---------------------------------------------------------------------------------------------- |
| `=` | OR | `city=(Boston, Cambridge)` | Matches whole words in any order - finds Boston OR Cambridge |
| `:` | OR | `employer:(Acme, Globex)` | Matches word fragments in any order - finds Acme OR Globex (including "AcmeCorp", "GlobexCom") |
| `==` | OR | `state==(MA, CT)` | Matches exactly - finds MA OR CT |
| `!=` | AND | `city!=(Boston, Cambridge)` | Excludes whole words - does NOT contain Boston AND NOT contain Cambridge |
| `!:` | AND | `employer!:(Test, Demo)` | Excludes word fragments - does NOT contain Test AND NOT contain Demo |
| `!==` | AND | `state!==(NY, NJ)` | Excludes exact matches (not case sensitive) - is NOT exactly NY AND NOT exactly NJ |
# Add an employer filter
Source: https://help.broadstripes.com/docs/search/limiting-searches-to-a-particular-set-of-workplaces
## Intro
One of the most helpful features of Broadstripes is how it can help organizers and other union leaders quickly find people they're looking for.
The **Employer filter** tool makes that even easier for you to do by narrowing your search to a certain group of workplaces or employments.
## Use the employer filter
1. Get started by finding the **Filter drop-down menu** on the left side of the homepage's search bar.
2. Clicking on it will produce the following menu:
3. At the bottom of the Filter drop-down is a section called **Employer filter**. To filter by employer, search for an employer by name in the text box, then click on the correct suggestion.
4. The workplace(s) you select will be added to the list of workplaces under the Employment Filter heading.
## Save your employer filter
You can save your Employer filter choices for a later search.
1. Start by clicking the **save button**.
2. Type a **name** for your saved filter in the box that appears and click **save** again.
3. The filter you just named and saved will now appear under a list of **Saved filters**. When you mouse over the filter's name, a pop-up will display, telling you that the filter is an Employer filter, and showing you which workplaces it includes.
# Save and share useful searches
Source: https://help.broadstripes.com/docs/search/save-and-share-searches
## Intro
When you've built a useful search that you think you might want to run again, you can choose to save it. You can also share your saved searches with a single user, or all users in your project.
## Save a search
In this example, we'll save a search and share it with another organizer, Jane.
1. Start by [running a search](/docs/search/search-builder-build-an-advanced-search). From the **Search Results** panel, click the **Save search** button in the upper-right corner of the page.
2. Give your search a **name**.
3. Next, choose whether you want to share the search. You can:
* Save it for your own use only (select **Personal**)
* Share it with all Broadstripes users on the project (select **Shared**)
* Share it with a specific user (select **For someone else**, then type the user's name). Note that when you save for someone else, it will *only* appear in that designated user's list. If you want a copy of the search for yourself, save it first as a **personal** search, then repeat the process and choose to save it for that other user.
If your project admin has turned off the **Save and delete shared objects** permission for basic users, the **Shared** option will be disabled and you will only be able to save searches as **Personal** or **For someone else**. Contact your project admin if you need to share searches with the whole project.
4. We'll choose this option to share the search with Jane.
5. Last, use the **Attach a layout:** drop-down to pick a saved layout if you want Broadstripes to display the columns of data in that layout each time the search is run in the future. Leave it set to **None** if you don't want to attach a layout. This is called "embedding a layout" in the search. If you want to learn more, check out the articles [Create and save a layout](/docs/customize/save-a-layout) and [Embed a layout with a saved search](/docs/customize/embed-a-layout-with-a-saved-search).
6. Click **Save** to save. The search will now appear in Jane's **YOUR SEARCHES** list in the menu on the left-hand side of her Broadstripes page.
## Where are searches saved?
In the previous step, you learned how to save and share searches. If you want to retrieve a saved search, you'll need to know where to find it. Searches are saved in the left-hand Broadstripes menu, ordered by how they were saved or shared:
* **Personal**: Personal saved searches will appear under **Your searches** in the left-hand Broadstripes menu.
* **Shared** (with all users): Shared searches will be listed under **Shared searches** in the left-hand Broadstripes menu for you and all users in your project.
* **For someone else**: These saved searches will *only* appear under that designated user's **Your searches** list (in their left-hand Broadstripes menu). You will not have a copy of these shared search in your own saved searches list. (If you want a copy of the search for yourself, save it first as a **personal** search, then repeat the process and choose to save it for that other user.)
You will also find your recent and saved searches by clicking the dropdown menu next to the magnifying glass icon.
## Manage all saved searches
The **Saved Searches** page provides a centralized view where you can browse, organize, and manage all the saved searches you have access to. This index page offers powerful features for viewing, filtering, editing, duplicating, and deleting searches.
### Access the Saved Searches page
You can access the **Saved Searches** page in two ways:
1. Click **Saved searches** from the sidebar navigation menu
2. Click the **Project settings** icon in the upper right corner of any page (or press **Ctrl-K** / **⌘K**), then choose **Saved searches**
3. Go directly to `/:project_nickname/saved_searches` in your browser
### What you'll see
The page displays a table with all saved searches you can access. The table includes powerful filtering and sorting capabilities for each column:
| Column | Description |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **Name** | The search name, with an actions dropdown menu |
| **Type** | "Shared" (blue badge), "Yours" (green badge, your own personal searches), or "Others" (gray badge, another user's personal search) |
| **Owner** | The user who owns the search |
| **Search text** | The BSQL query (long queries are truncated; hover to see the full text) |
| **Attached layout** | The associated search layout, or "(none)" if no layout is attached |
| **Contacts matched** | The number of results from the last time the search was run |
| **Created by** | The user who originally created the search |
| **Created at** | When the search was created |
| **Last Updated by** | The user who most recently modified the search |
| **Last Updated at** | When the search was last modified |
Click the **Contacts matched** count to open the search results in a new tab. Note that this count reflects the last time the search was executed and may not represent real-time results.
Viewing the full search text for a long search on the Saved searches page.
### Filter and sort searches
Use the filter inputs below each column header to narrow down your search list:
* **Text filters** - Filter by name, owner, search text, or layout name
* **Numeric filters** - Filter contacts matched by exact count, range, or comparison
* **Date filters** - Filter by creation or update dates
Click any column header to sort the table by that column. Click again to reverse the sort order.
### Work with individual searches
Click the dropdown menu (three dots) on any search row to access these actions:
* **Edit** - Modify the search name, BSQL query, visibility settings, or attached layout. The edit modal includes real-time BSQL validation that shows the number of contacts matched as you type. Admins can also transfer ownership of an existing search to another user by setting visibility to **For someone else** and choosing the target user.
* **Duplicate** - Create a copy of any accessible search as a personal search. The duplicate will have "(copy)" appended to the name, and you can modify it before saving.
* **Save as quick link** - From the edit or create dialog, click **Save as quick link** to add a one-click shortcut to your dashboard. See [Saved search quick links](/docs/customize/saved-search-quick-links) for details.
* **Delete** - Remove the search (you'll be asked to confirm). Only available for searches you own or if you're an admin.
When you edit or create a search, the modal validates your BSQL query in real-time and displays the number of contacts that match your search criteria. When results include both people and organizations, the count breaks down by type -- for example, "3 people, 2 orgs, 5 total records". This helps you verify your query is working correctly before saving.
### Duplicate any search
The duplicate action allows you to create a personal copy of any search you can access, including shared searches created by other users:
1. Click the dropdown menu on the search you want to duplicate
2. Select **Duplicate**
3. The save modal opens with the search pre-populated and "(copy)" added to the name
4. Modify the name, query, or settings as needed
5. Click **Save** to create your personal copy
This is useful when you want to use someone else's shared search as a starting point for your own customized version.
### Delete multiple searches at once
The bulk delete feature allows you to remove multiple searches in one action:
1. Use the checkboxes on the left side of the table to select the searches you want to delete
2. Click the **Delete** button that appears in the toolbar
3. Confirm the deletion in the dialog
You can only bulk delete searches that you own (or all searches if you're an admin). The Delete button will be disabled if none of your selected searches are deletable.
### Create a new saved search
Click the **New\...** button at the top of the page to create a new search from scratch:
1. Enter a name for your search
2. Write your BSQL query in the search text field
3. Choose the visibility: **Personal** or **Shared**
4. Optionally attach a layout
5. Watch the real-time validation to see how many contacts match your query
6. Click **Save** when ready
Admins can create saved searches on behalf of other users by selecting "For someone else" and choosing the user. Admins can also transfer ownership of an existing saved search to another user by editing it and setting visibility to "For someone else".
### Create a quick link for a saved search
When editing or creating a saved search, click the **Save as quick link** button in the dialog footer to add this search as a one-click shortcut on your dashboard. You can choose the output format (search results, PDF, or spreadsheet) and configure format-specific options.
For detailed instructions, see [Saved search quick links](/docs/customize/saved-search-quick-links).
### Who can see and edit searches?
Permissions are enforced throughout the Saved Searches page:
* **Personal searches** are visible only to their owner and project admins
* **Shared searches** are visible to all members of the project
* You can only edit or delete searches that you own, unless you are an admin
* The Edit and Delete options only appear in the dropdown menu for searches you have permission to modify
* Bulk delete only removes searches you have permission to delete
* Basic users can only create or edit shared searches if the project admin has enabled the **Save and delete shared objects** permission in [General settings](/docs/project-settings/general-settings)
# Search builder
Source: https://help.broadstripes.com/docs/search/search-builder-build-an-advanced-search
Use the search builder to create advanced, multi-criteria searches without writing search text by hand.
## Overview
The **search builder** is a visual tool that helps you construct complex searches by selecting fields, operators, and values from dropdown menus. Instead of typing search syntax directly, you build your search one rule at a time.
The search builder is especially useful when you want to filter by multiple criteria at once. For example, you might want to find:
* Workers at a particular employer who have been assessed as "1s"
* People who attended a recent event but haven't been contacted lately
* Members on a specific shift who haven't signed a card
## Open the search builder
Click the **Search Builder** button in the top navigation bar, next to the search icon.
The search builder panel opens above the search results area.
## Build a search with rules
When the search builder opens, a rule row appears ready for you to choose a field, operator, and value. The panel header reads **SEARCH BUILDER**.
Each rule has three parts:
1. **Field** — choose what to search by (e.g., Shift, Assessment, Employer, Name, events, custom fields)
2. **Operator** — choose how to match (e.g., "contains the word(s)," "matches the text," "equals," "has any value")
3. **Value** — enter or select the value to match against (some operators like "has any value" don't require a value)
### Available search fields
Click the field button on any rule to open the field picker -- a searchable popover listing all fields organized by category. Type to filter by name, or browse the groups. If you have run a search using the builder before, a **Recently used** group appears at the top, showing the fields from your most recent builder searches.
The available categories are:
* **Custom fields** — any custom fields configured for your project (e.g., Shift, Pay Rate)
* **Events and event steps** — events and their individual steps
* **Contact info** — address, email, phone number
* **Contact timeline** — timeline notes, dates, and authors
* **General** — name, assessment, contact type, notes, lists
* **Department structure** — employer, department, parent organization
* **Employment** — job title, work location, employee status, seniority date
* **Leadership** — leader assignments, turf, roles
* **Relationships** — related contacts, family members, grievants
* **Email and texting** — sent messages, delivery status, SMS history
* **Call center** — call outcomes, call pools, callers
* **External IDs** — IDs from external systems
* **Contact types** — your project's configured contact types
* **Shapes** — geographic shape group membership
### Add rules to narrow your search
Click **+ Add rule** to add another condition. When using multiple rules, choose whether contacts must match **AND** (all rules) or **OR** (any rule) using the toggle at the top of the builder.
In this example, the search finds contacts whose **Shift** field contains "Morning" **AND** who have any **Assessment** value.
### Add rule groups for complex logic
Click **Add group** to create a nested set of rules with its own AND/OR logic. Rule groups let you build searches like: "Find contacts at Employer X who are assessed as 1 **AND** (attended Committee Meeting **OR** signed a Card)."
Each group has its own **AND/OR** toggle and its own **+ Add rule**, **Add group**, and **Remove** buttons. You can nest groups to create complex search logic.
### Subquery rules for relational fields
When you choose a relational field such as **employer**, **employees**, or **leader**, the search builder shows an inline subquery editor instead of a plain value box. Use the subquery editor to add conditions about the related contacts -- for example, find contacts who work at an employer where a specific custom field has a certain value.
For a detailed guide on using multiple rules and rule groups, see [Search with multiple rules](/docs/search/search-with-multiple-rules) and [Add rule groups to your search](/docs/search/add-rule-groups-to-your-search).
### Remove a rule
Click the **Remove** button next to any rule to delete it from the search.
### Reorder rules
Drag any rule row by its drag handle to move it to a different position within its group.
## Live BSQL preview and match count
The footer of the search builder panel shows two live readouts as you build:
* **Broadstripes search language** -- a read-only preview of the BSQL text your rules will produce. Click the copy icon () to copy the text to your clipboard.
* **Match count** -- the number of contacts your current search would return, updated automatically as you edit rules. When results include both people and organizations, the count breaks down by type -- for example, **3 people, 2 orgs, 5 total records**.
## Execute your search
When your rules are ready, click **Search** to run the search. Broadstripes shows the results while keeping the builder open so you can refine your rules and search again.
On the search results page, a **Search and close** button also appears. Click it to run the search and dismiss the builder in one step.
Click **Cancel** to close the builder without running the search.
After executing, Broadstripes displays your search results with colored filter badges showing your active search criteria.
From the results page, you can:
* Click a filter badge's **×** to remove that criterion
* Click **Save search** to save the search for later
* Reopen the search builder to modify your search
## Keyboard shortcuts
| Shortcut | Action |
| ----------------------------------------------------- | -------------------------------- |
| **Ctrl-S** (Mac) / **Alt-S** (Windows, Linux) | Open or close the search builder |
| **Cmd-Enter** (Mac) / **Ctrl-Enter** (Windows, Linux) | Run the search |
| **Escape** | Close the search builder |
## Video: How to search with the search builder
## What's next
Learn more about building custom searches:
* [Search with multiple rules](/docs/search/search-with-multiple-rules)
* [Add rule groups to your search](/docs/search/add-rule-groups-to-your-search)
* [Broadstripes search language](/docs/search/search-language-reference)
# Search by event-related info
Source: https://help.broadstripes.com/docs/search/search-by-event-step
## Intro
Many Broadstripes projects use **events** and **event steps** to capture particular actions in the workflow of a given campaign activity, for example:
* To track petition signatures
* To track invitations, RSVPs, and attendance for a meeting or rally
* To record whether someone has signed a membership card
Keep in mind that **events** are created and customized by users and admins, so each project will have its own unique events. (Learn more in the [creating events](/docs/customize/create-events-to-track-goals) article.) Even though events are unique to your project, **Broadstripes search** allows you to search by any event step you create. You can even combine event-based information with other search criteria.
## Search by event step
For this example, we're going to show you how to do a search for anyone who has showed support for our campaign, but hasn't actually signed a card yet.
1. Start your search by clicking the **Search builder button** to the right of the search box at the top of the page.
2. A **search building panel** will open below the search box.
3. Initially, the panel will offer to search by **Employer (in or below)**, but you can easily change that to search by a whether or not their card has been signed, their assessment, or any other criteria.
4. Since we want to limit our search to workers who haven't yet signed a card, we'll set that up first. We'll do the search based on an event in our project called "**Card**" to find all the people who have a certain status for the event step "**Signed**." From the left-hand drop-down menu in the search builder, we'll choose the **Card - Signed** step under the **Events** section of the menu.
5\. When you pick an event step field, the search builder automatically sets the operator to "**is checked**." Since we only want to see workers who have *not* signed a card, change the operator to "**is not checked**" in the middle drop-down list.
6\. Our first search criteria (also called a "**rule**" in Broadstripes) is complete.
7\. Next, we’ll need to **add another rule** to the search, since we also want to see only those people who we know were assessed as supporters. Add an additional search rule by clicking the **+ Add rule** button located above and to the right of the existing search rule.
Click the + Add rule button to add another rule to the search.
8. We'll leave the first rule we created as it is and begin configuring our second rule. This rule will limit our search results to the workers who have shown support (those with an assessment code of 1 or 2).
9. To create the second rule, we'll start by selecting **Assessment** in the left-hand drop-down list.
10. In the center drop-down list, we'll choose "**is less than or equal to**."
11. To complete this rule, in the right-hand text box, we’ll type **2**.
A **search for “Assessment is less than or equal to 2”** will show us supporters with assessment codes of **“1”** and **“2”** but not **“3”** or higher.
12. Last, we need to check our Boolean operator **“AND”**. Since our search depends on both of our rules being true to find people who have not yet signed a card and who have a supportive assessment, we want to confirm we’re using the **“AND”** operator in our search.
The dark blue box indicates that **“AND”** is selected.
Boolean operators are used in searches to connect and define the relationship between search rules. Broadstripes uses two Boolean operators: AND and OR.
Use "**AND**" to run a search where *all* of the rules are true.\
Use "**OR**" to run a search where *at least one* of the rules is true.
13. Click the **Search** button to run the search. All the workers who have not yet signed a card and who have a supportive assessment will display in the **Search results page**.
## More
Great work! You've learned how to search events for unsigned cards. What if you'd like to run this search again in a week to see how many new cards have been signed? Check out our article on building a date-based search to learn how:
* [Search event-related info using dates or a time-frame](/docs/search/search-by-event-using-dates/)
# Search event info using dates or a timeframe
Source: https://help.broadstripes.com/docs/search/search-by-event-using-dates
Use the search builder to find contacts based on when an event step was checked, using dates or natural language timeframes like "last week."
## Overview
The Broadstripes search builder lets you search for very specific event-related information, including who has attended a rally in the last month or signed a card in the past week. In Broadstripes, that type of information is recorded as **events** and **event steps**. Keep in mind that events are created and customized by users and admins, so each project will have its own unique events. (Learn more in the [creating events](/docs/customize/create-events-to-track-goals) article.)
In this article, we'll show you how to search based on an event called "**Card**" to find all the people who have signed a card within a specific timeframe.
## Build a search to capture events in time
In another article, we [built a search to look at people who had not yet signed cards](/docs/search/search-by-event-step). For this article, we're going to assume it's a week later, and we want to see how many new cards have been signed since we ran that previous search. Here's how:
1. Start a new search by clicking the **Search Builder** button to the right of the search box at the top of the page.
2. A **search building panel** opens below the search box.
3. Since we want to limit our search to workers who have signed a card in the last week, choose the **Card - Signed** event step from the left-hand drop-down menu in the search builder.
4. In the middle drop-down menu, select **was checked on or after**.
5. In the right-hand text box, type **last week**.
Broadstripes accepts natural language date terms like "last week," "6 months ago," or "yesterday." You can also use a calendar date like "2/20/2025."
6. Click the **Search** button to run the search. All contacts who have had their card signed within the specified timeframe display in the **Search Results** page.
7. To see a count of the total number of contacts in the search results at a glance, check the bold count below the **Search Results** heading in the upper-left corner of the page (for example, "128 contacts"). Next to it, a **Showing 1-20** label tells you which portion of those results is on the current page.
## Date operators for events
When you select an event or event step keyword in the search builder, the following date-based operators are available:
| Operator | Description |
| ---------------------------- | ------------------------------------------------------------------------------ |
| **was checked on** | Matches contacts where the event step was checked on a specific date |
| **was not checked on** | Excludes contacts where the event step was checked on a specific date |
| **was checked before** | Matches contacts where the event step was checked before a specific date |
| **was checked after** | Matches contacts where the event step was checked after a specific date |
| **was checked on or before** | Matches contacts where the event step was checked on or before a specific date |
| **was checked on or after** | Matches contacts where the event step was checked on or after a specific date |
## Date value examples
You can enter dates in multiple formats:
| Format | Example |
| --------------------------- | ---------------------------------------------- |
| Natural language (relative) | last week, 6 months ago, yesterday, 2 days ago |
| Calendar date | 2/20/2025, 12/01/2024 |
# Search language basics
Source: https://help.broadstripes.com/docs/search/search-language-basics
Broadstripes search uses a simple but powerful query language that lets you find exactly the records you need. This guide will teach you the fundamentals of how to construct search queries.
## Understanding search clause structure
Every search query is built from one or more **search clauses**. A search clause has three parts:
1. **Keyword** - The field you want to search (e.g., `city`, `department`, `status`)
2. **Operator** - How you want to compare the value (e.g., `=`, `!=`, `>`, `<`)
3. **Value** - What you're searching for (e.g., `Boston`, `Active`, `100`)
Here's a simple example:
```
city = Boston
```
In this search:
* `city` is the keyword (the field we're searching)
* `=` is the operator (we want exact matches)
* `Boston` is the value (what we're looking for)
This search will find all records where the city field equals "Boston".
## Working with spaces and quotation marks
### The basic rule
Keywords and values can only contain spaces if they're surrounded by quotation marks.
### When you need quotes
If your value contains spaces, wrap it in quotes:
```
worksite = "Factory A"
```
```
employer = "Acme Manufacturing Corp"
```
```
CustomField = "Full Time Employee"
```
Without quotes, the search won't work correctly because the system won't know where your value ends.
### When you don't need quotes
Single-word values don't need quotes:
```
department = Warehouse
```
```
city = Boston
```
```
status = Active
```
### Quote usage for keywords
The same rule applies to keywords. Most field names are single words and don't need quotes, but if you have a custom field with spaces in its name, you'll need to use quotes:
```
"Employment Status" = Active
```
```
"Job Category" = "Skilled Trades"
```
## Operator spacing
Operators work with or without spaces around them, but adding spaces makes your searches easier to read.
These two searches work identically:
```
city=Boston
```
```
city = Boston
```
**Best practice**: Use spaces around your operators for clarity.
Here are some common operators:
| Operator | Meaning |
| -------- | ------------------------ |
| `=` | equals (exact match) |
| `!=` | not equals |
| `>` | greater than |
| `<` | less than |
| `>=` | greater than or equal to |
| `<=` | less than or equal to |
| `:` | contains (partial match) |
**Examples with spacing:**
Find people 19 years old and older (based on their Birth Date and the current date):
```
age > 18
```
Find people hired on or after January 1, 2024:
```
HireDate >= 2024-01-01
```
```
lastname : Smith
```
```
status != Inactive
```
## Boolean searches with AND and OR
You can combine multiple search clauses using Boolean operators to create more powerful searches.
### AND is implied
When you write multiple clauses without an operator between them, Broadstripes treats them as AND:
```
city = Boston department = Sales
```
This finds records where the city is Boston **AND** the department is Sales.
### Using OR
Use `OR` (in uppercase) to find records matching any of your criteria:
```
city = Boston OR city = Cambridge
```
This finds records where the city is Boston **OR** Cambridge.
### Grouping with parentheses
Use parentheses to group clauses and control the order of evaluation. This is especially important when mixing AND and OR:
```
department = Sales (city = Boston OR city = Cambridge)
```
This finds people in the Sales department who are located in either Boston or Cambridge.
Without parentheses, the search might not work as expected. Compare these two searches:
```
department = Sales city = Boston OR city = Cambridge
```
This could be interpreted incorrectly. Always use parentheses to make your intent clear:
```
department = Sales (city = Boston OR city = Cambridge)
```
### More Boolean examples
Find leaders at multiple locations:
```
role = any (employer : "Big Shop" OR employer : "Small Shop")
```
Find people who need outreach (haven't been contacted recently OR have a filed grievance):
```
lastcontact < "90 days ago" OR GrievanceStatus = Filed
```
## Searching by date
Broadstripes provides flexible date searching, including support for natural language dates.
### Standard date format
You can search using standard date formats:
```
HireDate = 2024-01-15
```
```
HireDate >= "January 1, 2025"
```
```
"Hire Date" < 6/30/2025
```
### Natural language dates
Broadstripes understands natural language date expressions, which makes searches easier to write and maintain. Wrap these expressions in quotes:
```
CardSignedDate < "11 months ago"
```
```
lastcontact > "2 weeks ago"
```
```
HireDate >= "one year ago"
```
```
LastContact < "90 days ago"
```
### Common natural language patterns
Expressions like these are supported:
* `"yesterday"`
* `"last week"`
* `"last month"`
* `"2 weeks ago"`
* `"3 months ago"`
* `"one year ago"`
* `"90 days ago"`
### Date range examples
Find people who signed cards in the past month:
```
CardSignedDate >= "one month ago"
```
Find people who haven't been contacted in over 90 days:
```
lastcontact < "90 days ago"
```
Find people hired this year:
```
HireDate >= 2024-01-01
```
Find people whose membership expires soon:
```
MembershipExpires <= "60 days from now"
```
## Searching for multiple values
You can search for multiple values at once using parentheses. This is useful when you want to find records that match any of several options.
### Basic multi-value syntax
Put your values in parentheses, separated by commas:
```
city = (Boston, Cambridge, Somerville)
```
This finds all records where the city is Boston, Cambridge, OR Somerville.
### More examples
```
status = (Active, Pending)
```
```
department = (Sales, Marketing, "Customer Service")
```
```
state = (MA, NH, VT, ME)
```
Note that if any value in your list contains spaces, it still needs quotes.
### Learn more
Multi-value searches have additional features and options. For complete details, see the [Creating multi-value searches](https://help.broadstripes.com/docs/search/creating-multi-value-search) guide.
## Searching related records (sub-queries)
One of the most powerful features of Broadstripes search is the ability to search based on properties of related records. These are called **sub-query searches** or **relational searches**.
### The concept
Instead of searching for a specific value, you can search for records that have a relationship to other records matching certain criteria.
### Basic sub-query syntax
Use square brackets `[]` to create a sub-query:
```
employer = [state = MA]
```
This finds all people whose employer is located in Massachusetts. You're not searching for employers directly—you're finding people whose employer meets the condition inside the brackets.
### More examples
Find people who work for organizations in the healthcare industry:
```
employer = [industry = Healthcare]
```
Find people whose supervisor has a specific title:
```
supervisor = [title = "Department Manager"]
```
### Combining with other searches
You can combine sub-queries with regular searches:
```
city = Boston employer = [state = MA]
```
This finds people who live in Boston AND whose employer is in Massachusetts.
***
## Next steps
Now that you understand the basics of search syntax, you can start building more complex queries by:
* Combining Boolean operators for complex logic
* Using date searches to find time-sensitive records
* Exploring the full range of available keywords for your project
For more detailed documentation, visit the [Broadstripes Help Center](https://help.broadstripes.com).
# Broadstripes search language
Source: https://help.broadstripes.com/docs/search/search-language-reference
Broadstripes search allows you to quickly find a record or group of records using a wide variety of search criteria, including names, dates, word fragments, or even blank values. This document provides a reference list of the standard search terms available to most projects. An additional reference covers feature-specific searches that are not available in all projects.
# Add multiple rules to your search
Source: https://help.broadstripes.com/docs/search/search-with-multiple-rules
Refine your search results with multiple rules
## Overview
With Broadstripes search, you can filter on multiple keywords or phrases, letting you most effectively refine your list of search results. Broadstripes refers to each of these search filters as "**rules**."
For this example, we'll show how to use multiple rules to search our project for the leaders at a particular shop called "Big Shop."
The two rules in this search might be stated this way:
>
Find people who...
>
have a leadership role
>
AND
>
work at "Big Shop"
## Build a multiple-rules search
1. To get started, click the **Search builder** button to the right of the search box at the top of the page.
2. A **search builder** panel will appear below the search box.
3. Initially, the panel starts you off with an **Employer (in or below)** rule, but you can easily change that to search by leadership role, our first rule.
4. To search for leaders, select "**Leadership role**" from the drop-down list on the left. That choice can be found under the **Leadership** section of the drop-down list, but you can bring the choice up even quicker by typing "**leadership**" into the **Filter box** (as shown below).
5. In the **middle drop-down box**, we'll choose "**has any value**" to see everyone with a leadership role. (If we wanted to select just people in a specific role, we could choose "**contains the word(s)**" as our operator and then choose the role from the pull-down list that would appear to the right.)
6. Next, we need to add our second rule, filtering the results to show only leaders at "**Big Shop**."
7. We'll add our second rule by clicking the **+Add rule** button in the upper right corner of the search builder.
8. Next, we'll specify that for this rule **Employer (in or below)** should contain the words "**Big Shop**."
9. Before running the search, we need to check our boolean operator "**AND**". Since our search depends on *both* of our rules being true to find people with a leadership role who are employed at Big Shop, we want to confirm we're using the "**AND**" operator in our search.
#### What's a Boolean operator?
Boolean operators are used in searches to connect and define the relationship between search rules. Broadstripes uses two Boolean operators: AND and OR.
Use "**AND**" to run a search where *all* of the rules are true. Use "**OR**" to run a search where *at least one* of the rules is true.
1. Finally, click the **Search** button to run the search.
2. Everyone with a leadership role at Big Shop will appear in the **Search Results** panel.
**I'm not sure which Boolean operator to use**
**Think about it this way**:
* **AND** = "I want people who meet ALL of these requirements" (narrower)
* **OR** = "I want people who meet ANY of these requirements" (broader)
***
## Multi-Rule Techniques
**Using OR Operators Effectively**
While AND operators narrow your search (everyone must meet ALL criteria), OR operators expand it (people who meet ANY of the criteria).
**Example**: Finding members who need urgent outreach
**Rules with mixed operators**:
* **Last direct contact date** "was before" → \[90 days ago]
* **OR** →
* **Grievance** "has event step checked" → "Filed"
* **OR** →
* **Contract Expiry** "is before" → \[date in next 60 days]
This finds people who either haven't been contacted recently, have active grievances, OR work at sites with expiring contracts.
***
**Typing search text with OR**
If you're typing directly in the search box or using advanced search syntax, use OR to connect multiple values:
**Text search syntax**:
```
city = Chicago OR city = Milwaukee OR city = Madison
```
**With other criteria** (use parentheses for rule grouping):
```
(city = Chicago OR city = Milwaukee) member = yes
```
You do need to type `AND` in the search box. It is implied.
**Zip code example**:
```
zip = 53204 OR zip = 53205 OR zip = 53206
```
The same search can be built using comma-separated values in parentheses:
```
zip = (53204, 53205, 53206)
```
This is equivalent to:
```
zip = 53204 OR zip = 53205 OR zip = 53206
```
***
## Tips for Building Effective Multi-Rule Searches
**1. Start Broad, Then Narrow**
Begin with a general rule (like "Member status = Active") and progressively add more specific rules to refine your results.
**2. Save Frequently-Used Searches**
Once you've built a search that works well, save it with a descriptive name so you can reuse it later without rebuilding.
**3. Use "Has Any Value" vs "Has No Value"**
* **Has any value**: Finds records where the field is filled in (e.g., "Leadership role has any value" = all leaders)
* **doesn't have a value**: Finds records where the field is empty (e.g., "Email has no value" = people missing email addresses)
**4. Watch Your Date Ranges**
When using "before" or "after" with dates, remember:
* **Before**: Earlier than the specified date
* **After**: Later than the specified date
***
## Troubleshooting Multi-Rule Searches
### "My search returned too many results"
**Solution**: Add more restrictive rules using AND operators, or make your existing rules more specific (e.g., change "contains the word(s)" to "matches the text" for exact matches).
### "My search returned zero results"
**Solution**: You may be using too many AND rules. Check if any single rule alone returns results, then identify which combination is too restrictive. Consider using OR operators for some criteria.
*Also, check your search filter! Are you filtering for people or organizations? Custom contacty type? Employer filter?*
### "My leadership search isn't finding everyone I expect"
**Solution**: Check that:
1. Leadership roles are spelled correctly
2. You're using "contains the word(s)" instead of "matches the text" (unless you need exact matches)
3. You're searching in the right organizational hierarchy (use "Employer (in or below)" to include all sub-organizations)
***
## Real-World Organizing Use Cases
##### Use Case 1: Identifying Hot Shop Leaders for a Campaign Blitz
**Scenario**: You're ramping up for a contract campaign and need to find all shop stewards and committee members at worksites with recent grievances.
**Search Goal**: Find leaders at active worksites who can mobilize quickly
**Rules**:
1. **Leadership role** "contains the word(s)" → "Steward" OR "Committee" (Two rules in a group with OR operator)
2. **Employer (in or below)** "contains the word(s)" → \[your target employer name]
3. **Last direct contact date** "is after" → \[date 30 days ago]
**Why this works**: This search combines leadership roles with recent engagement, giving you a list of active leaders who are likely to respond quickly to mobilization requests.
***
##### Use Case 2: Phone Banking High-Priority Members
**Scenario**: You need to build a phone bank list of members who haven't been contacted recently but live in a specific area where you're building density.
**Search Goal**: Find uncontacted members in target neighborhoods
**Rules**:
1. **City** "contains the word(s)" → "Milwaukee"
2. **Zip code** "contains the word(s)" → "53204", "53205", OR "53206" (3 rules in a group with OR operator)
3. **Cell phone** "has any value"
4. **Last direct contact date** "was before" → \[date 60 days ago] AND **Last call** (call center) "was before" 11/15/2025 (2 rules in a group with AND operator)
5. **Member status** "matches the text" → "Active"
**Why this works**: This ensures you're calling people who can be reached (have cell phones), need attention (haven't been contacted), and are in your density-building target area.
***
##### Use Case 3: Finding Potential New Leaders by Department
**Scenario**: You want to identify engaged members without current leadership roles who could be developed into leaders, focusing on specific departments.
**Search Goal**: Active members with no leadership role in target departments
**Rules**:
1. **Leadership role** "doesn't have a value"
2. **Employer** "contains the word(s)" → "County Hospital"
3. **Department** "contains the word(s)" → "Nursing" OR "Housekeeping" (Two rules in a group with OR operator)
4. **Member Events** "has an event step checked" → "1 on 1 Meeting"
5. **Member status** "matches the text" → "Active"
**Why this works**: This identifies members who are engaged (have had 1:1 meetings) but don't currently hold leadership positions, making them prime candidates for leadership development.
***
##### Use Case 4: Targeting Lapsed Members for Re-engagement
**Scenario**: You're running a re-engagement campaign focused on members who were once active but have become inactive.
**Search Goal**: Previously active members who need outreach
**Rules**:
1. **Member status** "matches the text" → "Lapsed" OR "Inactive" (Two rules in a group with OR operator)
2. **Member Event** "was checked before" → \[date 6 months ago]
3. **Email address** "has any value"
**Why this works**: You're finding people who showed commitment in the past (attended a Member Event) but have drifted away, and you have a way to reach them (email).
***
## Learn more
You can learn more (and watch video tutorials) about simple searches and searching with groups of rules in these articles:
* [Build an advanced search with the search builder](/docs/search/search-builder-build-an-advanced-search/)
* [Add rule groups to your search](/docs/search/add-rule-groups-to-your-search/)
# Sort search results
Source: https://help.broadstripes.com/docs/search/sort-search-results
After running a search, you may want results to display in a certain order. For instance, if you're interested in gauging support, you'll want to sort by workers' assessment codes. With Broadstripes, sorting search results is just a few clicks away. Here's how it's done:
## Sort search results
1. Click the **Sort by** link located just above your search results on the right-hand side of the page.
2. Choose to **Build new sort...**
3. A sort-building tool will open.
4. Using this sort builder, **click once on any field** to include it in your sort. Each field you choose will be added to the upper portion of the sort builder.
5. We'll choose **Assessment** (sometimes labeled "Code") since we are interested in having the results sorted by workers' assessments, and then **Last name**, so the workers will be ordered alphabetically under each assessment code.
Single-click on a sort item to include it in your sort.
6. Now that we've chosen the fields we want to use in the sort, we can make some adjustments:
* **drag and drop fields** to change the search priority (the field at the top will be sorted first, with each field below acting as a sub-sort)
* click the **A-Z icon** to toggle between ascending and descending order
7. When your sort meets your needs click **Apply sort.**
8. Broadstripes will **re-sort and display** your search results according to your new sort.
Read more about modifying, saving, or sharing useful searches in the [Create and save a sort](/docs/customize/save-a-sort) article.
# Set up a project
Source: https://help.broadstripes.com/docs/start-project/set-up-a-project
## Intro
Setting up a Broadstripes project means configuring the system to allow organizers to work in the most effective way (both for them, and for campaign leaders who need visibility into what's going on). This section of the knowledge base was created to help project admins (like you) do just that.
Here are the three basic steps to set up a project:
## 1. Customize your project
Even within the same union (and the same industry), different projects will often be set up differently, reflecting the different needs of the organizing team.
The areas of the project you may want to configure include:
* turf structure
* [Custom Fields](/docs/admin-guides/data-tools/custom-fields/)
* [Creating An Event](/docs/admin-guides/data-tools/creating-an-event/)
* [Assessment Codes](/docs/admin-guides/data-tools/assessment-codes/)
* [Leadership Roles](/docs/admin-guides/data-tools/leadership-roles/)
* [External Systems](/docs/project-settings/external-systems-settings)
The [Data Tools Overview](/docs/admin-guides/data-tools/data-tools-overview/) article explains when and why to use these different custom data tools.
## 2. Import your list
Once you've decided how you'd like to configure your project, and you've completed any necessary customizations, it's time to import your data.
Read all about the process here:
* [Data Import Overview](/docs/data-import-admin/data-import-overview/)
## 3. Help users get started
Once your project is configured and your list is imported, you're finally ready to add users and help them get started with Broadstripes.
Here's what you need to know to add and invite users, assign them the proper permissions:
* [Create and invite a user](/docs/start-project/user-and-membership-overview#create-and-invite-a-user)
* [User And Membership Overview](/docs/start-project/user-and-membership-overview/)
Once they're part of your project, you can point them to these useful spots in the knowledge base:
* [Register Your Account](/docs/getting-started/register-your-account/)
* [Log In And Reset A Password](/docs/getting-started/log-in-and-reset-a-password/)
* [Find People and Workplaces](/docs/getting-started/find-people-and-workplaces/)
* and more in the knowledge base's [Get Started](/docs/getting-started/getting-started-overview/)
# Users and membership guide ▶️
Source: https://help.broadstripes.com/docs/start-project/user-and-membership-overview
## Intro
After setting up your project and importing your data, you're ready to bring users on board.
The topics in this section will help guide you through what to consider when adding users to your project and provide simple step-by-step instructions on how to invite and manage them.
As a project admin, you have the ability to invite new users to your Broadstripes project.
It's important, obviously, that these be people you trust with access to the information in the project.
Before you invite a new organizer, take a moment to think about whether you want them to have the same privileges that you do, and how they'll be interacting with the project: will they be organizing in the field, or based in the campaign office supporting other organizers?
## Video: Invite a new user
Once you've given roles and permissions some thought, here's a video that walks you through the steps for adding a user to your project (or you can read about how to invite users step-by-step in the article below):
### Add and invite a new user
## Step-by-step: Invite a user
1. Start by opening the settings gear (**Project settings**) in the upper right-hand corner of the page and selecting **Members**, under **Membership and activity**. (You can also press **Command-K** or **Ctrl-K** to open the settings menu and type "Members" to find it.) On the **Project members** page, you will see a list of all the people who have been invited to your project.
Before you invite a new person, check whether they have already been invited by looking for their name in the list on the **Memberships tab**. If they missed the invitation or it went to their spam folder, you can click the **Re-send** button in their row. (Note that a pending status does not necessarily mean the user has not activated their membership.)
2. If the person hasn't been invited, click the **Invite member** tab (next to **Memberships**) to access the new member form.
3. Fill out the first section of the new member form. The **Message** text box is optional and may be left blank. The invitation email will greet new users with "Welcome to Broadstripes!" and existing users with "You're invited!", include the project name, and provide a **Login to \[project name]** button. If you include a message, it will appear in a styled block beneath the greeting. The email sent to new users also shows the date the invitation expires.
4. Choose the user's role and permissions from the drop-down menu at the bottom of the page. If you need an explanation of the different roles and permissions Broadstripes offers to users, or if you have questions about whether to check the "**Create a linked person**" checkbox, take a look at the [User roles](#user-roles) section below.
5. Click the **Send invitation** button, and the person you are inviting will receive an email from Broadstripes with a link to set a password.
6. Once they have a password, they will appear in the list of project users under the **Memberships** tab on the **Project members** page.
7. On this page, their permissions and roles are also visible and you can hover over any icon to see a more detailed description of permissions granted.
8. Permissions and roles can be edited from the member actions menu at the end of the row -- select **Edit permissions**. Learn more about editing a user's permissions or role in the "Edit user permissions" section below.
If you have sent an invite to a user who has deleted or can't find the invite email, you can re-send an invitation email. In the **Invitation** column of the person's row, click the **Re-send** button to send a new invitation email. You can also re-send from the member actions menu at the end of the row.
## Support your users
Once a user is invited to join your project, they'll need to set up their password by registering their account. Once their password is set, they'll use it to log in. Occasionally, you may be asked to help retrieve or reset a password. Since admins don't have access to password information, that's something users will need to do on their own. However, you can support your users by helping to walk them through the process.
These articles provide everything a user needs to know to register their account, create their password, log in, and reset their password:
* [register your account](/docs/getting-started/register-your-account/)
* [log in and reset a password](/docs/getting-started/log-in-and-reset-a-password/)
## Deactivate a user
A crucial responsibility of the project admin is deactivating organizers who leave the campaign.
When an organizers leaves a campaign, it may be important to remove their access to the information contained in the Broadstripes project.
Important
If the user has left your organization, you may need to remove them from more than one project. In that case, you will need to repeat this process for each project of which they are a member.
1. Start by opening the settings gear (**Project settings**) in the upper right-hand corner of the page and selecting **Members**, under **Membership and activity**.
2. On the **Project members** page, you will see a list of all the people who have been invited to your project. Locate the person you want to remove on this list. (If you can't find them, that means they no longer have access to the project, and may already have been removed.)
3. Click the ellipsis icon at the end of the person's row to open the member actions menu, then click **Deactivate**.
4\. A notification will appear at the bottom center of the screen, confirming the deactivation.
## Video: Remove a user or edit a user's role or permissions
Admins can edit a user's role or permissions at any time, or remove them from a project altogether. Here's a video that walks you through the steps (or you can read about how to make these edits in the article below):
### Change a user's role or permissions
## Step-by-step: Edit a user's role or permissions
You can decide what kind of role a user will play when you initially invite them to join your project. After a user is set up, you can edit their user role at any time. Here's how:
1. Open the settings gear (**Project settings**) in the upper right and select **Members**, under **Membership and activity**. On the **Project members** page, click the ellipsis icon at the end of the member's row, then select **Edit permissions**.
### User roles
Choose the correct user role. There are two types of users: **Basic users** and **Project admins**.
* A **Basic user** account will fulfill the needs of most of your organizers.
* **Project admins** have additional permissions that you may not want all users on your project to have: for example, the ability to add new users.
* You can learn more details about user roles and associated permissions on the [user types and permissions](/docs/start-project/user-roles-and-permissions/).
### User permissions
When you initially asked a user to join your project, you had a chance to set some specific permissions. After a user joins the project, you can grant or revoke these permissions at any time by clicking the **"edit"** link on the **Project members** page as shown above. Keep in mind that if a user is given the admin role, they will have the authority to grant or restore permissions to themselves. Here are the specific permissions you can grant:
* **Can set opt-in/opt-out** Check this box to enable the user to control contacts' opt-in and opt-out settings for Broadstripes SMS and email messaging
* **Can send bulk emails** Check this box to allow the user to send emails to group of Broadstripes contacts
* **Can send SMS messages (and provision numbers, if admin)** Check this box to allow the user to send group texts to Broadstripes contacts and receive replies on their own phones using a provisioned number that masks their actual phone number. If the user has admin permissions, checking this box will also allow them to provision new phone numbers for other users for masking purposes.
* **Can manage their own Call Center call pools** Check this box if you use Broadstripes' Call Center and want to allow the user permission to create and modify call pools.
* **Can download CSV / XLSX files** Check this box to allow a user to export spreadsheet lists from Broadstripes' search results to their local machine.
* **Can merge contacts** Check this box to allow a basic user to combine duplicate contact records.
* **Can manage public forms** Check this box to allow a basic user to create, edit, and configure [public forms](/docs/admin-guides/public-forms/public-forms-overview) for the project.
* **Can perform data imports** Check this box to allow a basic user to [import spreadsheets](/docs/data-import-admin/import-a-spreadsheet) of contact data into the project.
* **Can manage project members** Check this box to allow a project admin to edit user permissions and invite new users.
* **Create a linked person for this user (necessary if they’re going to organize)** **Note:** The option to **Create a linked person** is only available when the user is first invited to your project. Check this box if the user you’re inviting will be organizing workers directly. To have leadership relationships within a Broadstripes project, a user account must be linked to a person in the project. If the person you’re inviting is a lead who will be looking at the data and running reports but not organizing, or someone who will only be doing data entry, they don’t need a linked person, and this box can remain unchecked. You can always unlink a person by clicking the unlink icon.
# User roles and permissions
Source: https://help.broadstripes.com/docs/start-project/user-roles-and-permissions
## Overview
Before you invite a new organizer or change permissions granted to an existing organizer, you'll want to understand the difference between each of Broadstripes' user roles.
This article gives an in-depth look at Broadstripes' three user roles including exactly what they are allowed to see and do within the project.
* Basic Users
* Project Admins
Once you've decided what kind of role a user will play, you can visit the [user and membership overview](/docs/start-project/user-and-membership-overview) for videos and step-by-step instructions on adding users and assigning or editing user permissions.
## User roles
### Basic user
A **basic user** is a member of a particular project with all the necessary permissions to work with the data in that project. They can:
* Create, edit, and delete contact records for people and organizations (i.e. shops and departments).
* Create, edit, and delete events.
* Create and save searches and layouts (personal or shared).
* Create and save lists (personal or shared)
In addition, a project admin can grant a basic user any of the following **optional per-user permissions** when inviting them or by editing their membership later:
* **Download CSV / XLSX files** — export search results as spreadsheets.
* **Merge contacts** — combine duplicate contact records.
* **Manage public forms** — create, edit, and configure public forms.
* **Perform data imports** — import spreadsheets of contact data into the project.
If a basic user does not have one of these permissions, the corresponding feature is not available to them in their project.
### Project admin
A **project admin** has all the capabilities a basic user does. In addition, they can:
* Invite new users, promote existing users to admin, and deactivate existing user memberships from the project.
* Create, update, and delete all project data such as:
* Custom fields
* Assessments (aka codes)
* Leader roles
* External systems
* User groups
* Status reports
* Calculated columns
* Contact types
* Import data via spreadsheet.
* Import shape files.
Admins may have other capabilities as well, as determined by the configuration of your project. For example, if a project has SMS (i.e. text) messaging features enabled, admins will have the ability to provision SMS numbers for users.
Note that a user may be an admin in one project and a basic user in another.
# Actions overview - make changes to contacts in bulk
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions
Learn how to apply bulk actions to multiple contacts at once from search results
# Intro
As you probably know, the search results page lets you see the records that match your search criteria and to view details about those contacts (learn more about creating custom searches in the [Search section](/docs/search/search-builder-build-an-advanced-search)).
What you might *not* know is that the search results page contains another powerful feature – the ability to make bulk edits to multiple contact records at one time. You do this by applying a **bulk action** to the contacts in your search results.
Here's a look at all of the actions you can apply:
Follow the links below to learn to apply each of these actions.
* [Set custom field](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-set-update-custom-field) (set or update the value of a custom field for multiple users at once)
* [Set assessments](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-set-assessment) (set or clear the assessment code for multiple contacts in bulk; may be labeled "Set codes" in your project)
* [Check/uncheck event steps](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-assign-event-steps) (check or uncheck steps of an event for multiple contacts in bulk)
* [Add tag](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-list) (add a tag to contacts in bulk)
* [Remove tag](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-list) (remove a tag from contacts in bulk)
* [Assign to leader](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-assign-leader-remove-leader) (assign a leader to multiple contacts in bulk)
* [Remove leader](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-assign-leader-remove-leader) (remove a leadership information from contact records in bulk)
- Create Employment
- Change Department
- Change Job Title
- Terminate Employment
- Delete Employment
- **Merge contacts** (merge multiple contact records into a single record)
- [Delete contacts](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-delete-contacts) (permanently delete a contact or group of contact from Broadstripes – cannot be undone)
- [Delete contact info](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-delete-contact-info) (Delete address, phone, and email information from multiple contact records in bulk)
- **Change primary contact info** (change the primary contact info for multiple contact records in bulk)
# Actions - Assign (check or uncheck) event steps
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-assign-event-steps
Use bulk actions to check or uncheck event steps for multiple contacts
## Set (check) event steps
When you are checking off an event or an event step for multiple contacts at once, using an action can be a great time-saver. (If you are new to events, check out the [Events](/docs/customize/create-events-to-track-goals) overview article for more information.)
For this example, we'll show how to check off signed cards for a group of contacts we visited last week.
1. First, we'll run a search for people on our house visit list. Then, from the **Search Results** page, we'll [select the contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) who have just signed their cards. (If you need help running a search, check out the [Search builder how-to article](/docs/search/search-builder-build-an-advanced-search).)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Check/uncheck event steps**.
3. When prompted to select an event step, we'll choose the **Card > Signed** step and click **Check**.
4. Broadstripes will automatically update all of the contact records that we selected to show that their cards are signed. A **notification box** will appear at the bottom center of the screen to confirm our update.
## Unset (uncheck) an event step
If you want to uncheck (rather than check) an event step for a group of contacts all at once, you can do that from the actions drop-down menu, too. In this example, we have a list of people who were accidentally marked as having signed cards. We need to correct their records to show that they haven't yet signed a card.
1. Again, we'll start by running a search. From the **Search Results** page, we'll [select the contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) we need to correct. (If you need help running a search, check out the[Search builder how-to article](/docs/search/search-builder-build-an-advanced-search)article.)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Check/uncheck event steps**.
3. When prompted to select an event step, we'll choose the **Card > Signed** step.
4. Finally, we'll click **Uncheck** to unset (uncheck) the Card > Signed event step.
5. Broadstripes will automatically update all of the contact records that we selected to show that their cards are no longer signed. A **notification box** will appear at the bottom center of the screen to confirm our update.
# Actions - Assign leader/remove leader
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-assign-leader-remove-leader
Assign or remove leaders for multiple contacts using bulk actions
## Assign a leader
Broadstripes' bulk actions make it simple to assign a leader to multiple contacts at once. If you need to remove a leader, you can do that with a bulk action, too.
1. First, run a search for the people you want to assign to a leader. Then, from the **Search Results** page, [select those contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/). (If you need help running a search, check out the [Search builder how-to article](/docs/search/search-builder-build-an-advanced-search).)
2. With the contacts selected, go to the **Actions** drop-down menu and choose **Assign to leader**.
3. When prompted for the leader, **begin typing their name** in the text box. Broadstripes will suggest names that match. **Select the correct name** from the list and click **Add leader**.
If any of the selected workers were previously assigned to a leader, Broadstripes will ask you to **Assign** (confirm) or **Cancel** the new leadership assignment.
4. Broadstripes will automatically update all of the contact records that you selected with their new leader. A **notification** will appear to confirm the update.
## Remove leadership information
If you want to remove leadership information from a group of contacts, you can do that from the actions drop-down menu, too. In the previous example, we assigned 20 contacts to Mary Worker. In this example, we'll remove Mary Worker as the leader of those workers. When we're done, their records will show that they have no leader.
1. We'll start by running a search for people Mary leads. From the **Search Results** page, we'll [select the contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) we assigned to Mary in the previous example. (If you need help running a search, check out the [Search builder how-to article](/docs/search/search-builder-build-an-advanced-search).)
2. With those contacts selected, we'll go to the **Actions** drop-down menu and choose **Remove leader**.
3. Next, we'll be given a choice to **End Relationship** or **Delete**.
* Choose **End Relationship** if you want to keep an historical record of the fact that Mary was once the worker's leader (an entry showing the start and end date of the relationship will be written on the **Leadership tab** of the worker's record).
* Choose **Delete** if you want to completely erase the leadership relationship and any history of it (for instance, if Mary was assigned in error).
4. Click the **End Leader Relationships** button.
5. Broadstripes will automatically update all of the selected contact records to show that they are not lead by anyone. A **notification** will appear to confirm our update.
# Actions - Change employment info
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-change-employment-info
Use bulk actions to create, terminate, delete employments, and change departments or job titles
## Update employment information
Use a bulk action to update workers' department or job title or to create, terminate, or delete entire employment records for a group of workers.
Working from your search results, you can easily update employment information for a group of workers from the **Actions drop-down menu**.
You can add new employments, show that a worker has been terminated from an employment, or even completely delete all history of an employment. You can also easily use a bulk action to change specific employment information for a group of workers. This includes the department they work in or their job title (sometimes labeled "classification").
***
## Create employments
For this example, we'll show how to assign a group of workers a **new employment** as Houseperson in Housekeeping on the second floor of the Grand Hotel.
If any of our workers already have an employment, this new employment will be added as an *additional* employment – existing employments will not be affected (to *replace* a worker's employment, use the existing employment options described in step 5 below).
1. To create an employment for our group of workers, we'll start by running a search. From the **Search Results** page, we'll [select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) whose employment we are adding. (If you need help running a search, check out the [Search builder](/docs/search/search-builder-build-an-advanced-search) article.)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Create employment**.
3. When prompted for the department, **begin typing the department name** in the text box. Broadstripes will suggest names that match. **Select the department** from the list and move to the **Job title** field.
4. If you use job titles (sometimes labeled "**Classifications**"), **begin typing the job title name** in the text box and choose a job title from the list that appears.
5. By default, any employments your workers already have are left alone. If you also want to clear out those older employments, click the **Click here** link in the line that reads "Existing employments will not be affected," then choose whether existing employments should be **Left in place**, **Deleted**, or **Terminated**. If you choose **Terminated**, fill in the **Date ended** and **Reason ended** fields.
Choosing how existing employments are handled is optional. Other employment details – such as hourly rate, employee number, work location, and bargaining unit membership – can't be set with this bulk action. Add them from the **Employment** tab of an individual contact's profile page.
6. When you've finished adding the workers' employment information, click the **Create employments** button.
7. Broadstripes will automatically update all of the contact records that we selected with their new employment. A **notification** will appear to confirm our update.
***
## Terminate employments
If you want to **terminate an employment** for a group of contacts at one time, you can do that from the actions drop-down menu, too. A record of any terminated employment will be visible on the **Employment tab** of each worker's profile page.
In this example, we will terminate an employment for three workers who are no longer working in Housekeeping on the second floor of the Grand Hotel.
1. Again, we'll start by running a search. From the **Search Results** page, we'll [select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) whose employments we need to terminate. (If you need help running a search, check out the [Search builder](/docs/search/search-builder-build-an-advanced-search) article.)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Terminate employment**.
3. We'll be prompted to choose between **terminating all employments** and **terminating a particular employment**. We'll choose a specific employment (Grand Hotel : Housekeeping : 2nd Floor), enter the termination date, and give a brief explanation of why the employment ended. If this employment had child records, we could choose to terminate those as well by checking the **Include children** checkbox.
4. Finally, we'll click the **Terminate employments** button to complete our bulk action.
5. Broadstripes will automatically update all of the contact records that we selected to show that their 2nd floor Housekeeping employment is terminated. A record of this terminated employment will be visible on the **Employment tab** of each worker's profile page.
***
## Delete employments
Sometimes you may want to completely **delete an employment record**. Unlike termination, the deletion of an employment will not leave any historical record of the employment on a worker's profile.
In this example, we will delete an employment for four workers who were entered incorrectly as 3rd floor Housekeeping employees at the Grand Hotel.
1. Again, we'll start by running a search. From the **Search Results** page, we'll [select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) whose employments we need to delete. (If you need help running a search, check out the [Search builder](/docs/search/search-builder-build-an-advanced-search) article.)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Delete employment**.
3. We'll be prompted to choose what to delete:
* **all of their employments** permanently removes all employment records
* **only their employments with a particular employer** permanently removes only the employment you specify in the next step
* **only their employments with no employer** permanently removes an employment that may have been created without a specified employer
We'll choose a specific employment (Grand Hotel : Housekeeping : 3rd Floor) and check the **Include children** checkbox so no child employment records remain.
4. We'll click the **Delete employments** button to complete our bulk action.
5. Broadstripes will automatically delete the 3rd Floor Housekeeping employment record for all of the contact records that we selected. This deletion will be permanent, and there will be no history showing that the employment ever existed.
***
## Change departments
For this example, we'll **change the department** for a group of workers who were previously in Housekeeping, but are now working in Concierge services at the Deluxe Hotel.
1. To make this change for our group of workers, we'll start by running a search. From the **Search Results** page, we'll [select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) whose department we are changing. (If you need help running a search, check out the [Search builder](/docs/search/search-builder-build-an-advanced-search) article.)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Change department**.
3. Click the **change** link to change the department.
4. When prompted for the department, **begin typing the department name** in the text box. Broadstripes will suggest names that match. **Select the department** from the list and click **Update department**.
5. Broadstripes will automatically update all of the contact records that we selected with their new department. A **pop-up box** will appear to confirm our update.
***
## Change job titles (classifications)
Depending on the project settings set up by your administrator, you may see either the label "classification" or "job title" in your Broadstripes project – both refer to the same field, only the label is different.
In this example, we'll **change the job title (classification)** for the four workers whose departments we updated in the previous step. We'll change their job titles from "Houseperson" to "Front Desk", their new role.
1. Again, we'll start by running a search. From the **Search Results** page, we'll [select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) whose job titles we need to change. (If you need help running a search, check out the [Search builder](/docs/search/search-builder-build-an-advanced-search) article.)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Change job title**.
3. When prompted for the new job title, **begin typing the job title** in the text box. Broadstripes will suggest names that match. **Select the job title** from the list and click **Update job title**.
4. Broadstripes will automatically update all of the contact records that we selected to show their new Front desk role. A **pop-up box** will appear to confirm the changes.
# Actions - Delete contact info
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-delete-contact-info
Delete address, phone, or email information from multiple contacts
## Permanently delete address, phone, and email information from contact records
You can use bulk actions to **permanently delete certain contact information from a contact or group of contacts** from your Broadstripes project. You can delete all types of contact info (addresses, phones, cell phones and emails) from all groups (personal, business, home and other) or choose a combination of types and groups.
Being able to delete certain contact info can be useful when you make a mistake during your import – for instance importing cell phone numbers as home phones. It might also be used in a case where you want to remove all business phone numbers to avoid accidentally tipping off management to your organizing plans by contacting a person at work.
For this example, we'll show how to permanently delete business phone numbers for a group of workers.
1. We'll start by running a search. From the **Search Results** page, we'll [select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) whose business numbers we are deleting. (If you need help running a search, check out the [Create and save a search](/docs/search/save-and-share-searches) article.)
2. Next, we'll check both **Phones (not cell phones)** and **Cell phones** as the **contact type** – checking only **Phones (not cell phones)** would leave business cell numbers in place. All four **groups** are checked when the panel opens, so we'll uncheck **Personal**, **Home**, and **Other**, leaving only **Business** checked, and click **Delete**.
3. Broadstripes will automatically queue the process of deleting the selected contact info. A **notification** will appear to confirm the deletion is queued. No further action is needed.
# Actions - Delete contacts
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-delete-contacts
Permanently delete multiple contact records using bulk actions
## Delete contact records permanently
You can use bulk actions to **permanently delete a contact or group of contacts** from your Broadstripes project. Unlike with other organizing databases you may have used, when you delete a contact in Broadstripes, the record is *completely removed* from your Broadstripes project along with all associated data and history. After a record has been deleted, it cannot be retrieved by any user for any reason. Deleting contact records cannot be undone.
#### Cases where contacts can't be deleted
There are a few cases where contacts cannot be deleted using a bulk action. Contacts that are linked to Broadstripes users can't be deleted. You will also not be able to delete contacts that are linked to a locked external system.
If you are sure that you want to permanently delete contacts with a bulk action, here are the steps to follow:
For this example, we'll show how to permanently delete a group of workers that we no longer want in our Broadstripes project.
1. We'll start by running a search. From the **Search Results** page, we'll [select the workers](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts) whose records we are deleting. (If you need help running a search, check out the [Create and save a search](/docs/search/save-and-share-searches) article.)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Delete contact(s)**.
#### Deletion is permanent.
Deleting a contact will\_ permanently remove\_ that person's record and all of their associated details from the entire Broadstripes project. The record cannot be retrieved after it is deleted. You cannot undo a deletion.
1. A panel will appear just above your search results. If you are sure that you want to continue with deletion, click Delete.
When deleting more than five contacts at once, you'll be asked to confirm your deletion by typing **DELETE** before clicking **Delete**.
2. Broadstripes will automatically queue the process of deleting the selected records and their associated data. A **pop-up notification box** will appear at the bottom center of the screen to confirm the deletion is queued. No further action is needed.
#### Deleting large numbers of contacts
If you are removing a large volume of contacts at one time, it may take up to a few minutes for Broadstripes to complete the process. You may choose to receive an email notification once the deletion is complete by checking the box labeled
This means that immediately after queuing the records for deletion, you may still see those records in search results or reports. You won't be notified that the deletion is complete, but Broadstripes will queue the process as soon as you confirm the deletion and finish when all selected contacts are deleted.
# Actions - Add/remove tag
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-list
Add or remove multiple contacts from tags using bulk actions
## Add a tag to contacts
One of the most common bulk actions applied to search results is adding a tag to contacts. **Tags** give you an easy way to manually group individuals you want to track for any reason (for instance your key volunteers, or the people you need to follow up with this month). You can learn more about setting up and using tags in the [Tags](/docs/admin-guides/data-tools/tag-lists) article.
Once you know which contacts you want to tag, you're ready. This article explains how to add a tag and how to remove one later.
## Add a tag to selected contacts
1. From the **Search Results** page, [select the contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) you want to tag. (If you need help running a search, check out the [Find people and workplaces](/docs/getting-started/find-people-and-workplaces), [Search by workplace](/docs/getting-started/search-by-workplace), or the articles in the [Search section](/docs/search/search-builder-build-an-advanced-search).)
2. With the contacts selected, go to the **Actions** drop-down menu and choose **Add tag**.
3. You can choose to add the contacts to one of your existing personal or shared tags, or create a new tag. For this example, we'll choose to **add a new tag.**
4. **Enter a name for the new tag** and indicate whether you want to share the tag with others (**Shared**), or have it visible only to you (**Personal**). Click **Add** to create the tag and automatically add the contacts you selected in the previous step.
5. You'll see a notification at the bottom center of the screen that your contacts have been tagged.
## Remove a tag from contacts
1. Start by clicking the **Tags** link on the navigation panel.
2. Broadstripes will open the **Tags** page where you'll see all of your tags (both shared and personal).
3. Clicking on the number in the **Records tagged** column will open a page showing all the members of that tag.
4. From the list that appears, **check** any people you want to remove from the tag.
You don't have to start from the **Tags** page to remove a person from a tag. You can check any person displayed on *any* search results page, then remove them using the same steps outlined below.
5. From the **Actions** drop-down menu, select **Remove tag**.
Do not "Delete" a contact by mistake
Remember that you need to choose **Remove tag** from the **Actions** menu. Choosing **Delete** from this menu by mistake will permanently erase the contact from your *entire project*.
6. Choose the tag you want to remove the contacts from and click the **Remove** button.
7. You'll see a pop-up note confirming that your contacts have been removed from the tag.
# Actions - Set assessment for multiple contacts
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-set-assessment
Use bulk actions to set the assessment code for multiple contacts at once from search results
If your project uses assessment codes to track where workers stand in relation to your campaign goals, you can update the assessment for multiple contacts in a single step using the **Set assessments** bulk action (your project may call this **Set codes** -- the label follows your project's [General settings](/docs/project-settings/general-settings) terminology).
Only project administrators can set assessments in bulk. If you don't see this option in the **Actions** menu, check with your project administrator.
## Set the assessment for multiple contacts
For this example, we'll update a group of contacts who have just signed their cards and are now confirmed supporters, setting their assessment to "1 - Strong support."
1. Run a search for the contacts whose assessments you want to update. From the **Search Results** page, [select the contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) you want to update.
2. Open the **Actions** drop-down menu and choose **Set assessments** (or **Set codes**, depending on your project's settings).
3. The **Set assessments** dialog opens. It shows how many contacts you have selected.
4. In the **New assessment** field, click to open the dropdown and choose the assessment code you want to apply to the selected contacts. Each option is shown with its colored disc and label so you can identify the right code at a glance.
To clear the assessment from all selected contacts (leaving them unassessed), choose the **Unassessed** option at the top of the list.
5. Optionally, enter a **Timeline note** in the text field. This note will be added to every selected contact's timeline record along with the assessment change, so your team can see why the assessment was updated. If your project requires a timeline note whenever an assessment changes, this field is required.
6. Click **Set assessments** to queue the update.
7. A notification appears confirming that Broadstripes has queued the contacts for the update. No further action is needed -- Broadstripes will automatically update all of the contact records you selected. When the job finishes, a second notification appears showing how many contacts were updated and how many were skipped (contacts already at the chosen value are skipped automatically).
## Notes and limitations
* **Contacts already at the target value are skipped.** If a contact is already assessed at the value you chose, Broadstripes will not create a duplicate timeline entry for that contact. The completion notification tells you exactly how many contacts were updated and how many were skipped.
* **Clearing an assessment** sets the contact's assessment field to blank. If your project has a default assessment code configured, that code is *not* re-applied automatically -- the field is simply cleared.
* **The timeline note is optional** unless your project's assessment settings require a timeline note on every assessment change. See [Assessment codes](/docs/admin-guides/data-tools/assessment-codes) for more about that setting.
## Learn more
* [Assessment codes](/docs/admin-guides/data-tools/assessment-codes) -- learn how to configure your project's assessment scale and colors.
* [Selecting contacts in search results](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) -- learn how to select all contacts, just the visible page, or specific individuals before applying a bulk action.
# Actions - Set or update a custom field
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-set-update-custom-field
Set or update custom field values for multiple contacts at once
If you are like other Broadstripes users, it's likely that you use at least one custom field to track information that's important to your campaign. If you want to set or update the value of a custom field for multiple users at once, you can use a bulk action to simplify that task. (If you are new to custom fields, you can read more about them in the [Data tools overview](/docs/admin-guides/data-tools/data-tools-overview).)
Before you get started, note that not *all* types of custom fields can be updated in bulk. **Ranked choice** fields are the exception – instead of a value to set, they show the message "This data type is not supported for bulk setting." Every other type can be updated using this time-saving method, including **single-line** and **multiple-line text input boxes**, **numbers**, **dates**, **times of day**, **check boxes**, **radio buttons**, and **drop-down** or **multiple-selection choosers**.
## Set (update) a custom field for multiple contacts
For this example, we'll update a group of contacts to show that they are all interested in benefits, something we track in our project using a custom field called "**Interests**."
1. First, we'll run a search that includes the people whose records we want to update. From the **Search Results** page, we'll [select the contacts](/docs/viewing-search-results-and-edit/selecting-deselecting-contacts/) who are interested in benefits. (If you need help running a search, check out the [Search builder how-to article](/docs/search/search-builder-build-an-advanced-search).)
2. With the contacts selected, we'll go to the **Actions** drop-down menu and choose **Set custom field**.
In this example, we're using a custom field named "Interests" to track a worker's possible area of engagement. If you don't see this option in your list of choices, don't worry. Since custom fields are set up by organizations like yours to meet your specific needs, your project will likely contain custom fields with totally different names, values, and purposes.
3. When prompted to select the custom field, we'll choose **Interests**.
4. From the drop-down list of values that appears, we'll choose **Benefits** and click **Update**.!
5. When you click **Update**, a notification will appear showing that Broadstripes has queued the contacts for the update. No further action is needed – Broadstripes will automatically update all of the contact records that we selected, setting the custom field called "**Interests**" to show the value "**Benefits**".
## Clear the value of a custom field with bulk actions
In certain cases, you can also use a bulk action to clear out the value of a custom field.
### Drop-down choosers
If your custom field is a drop-down chooser, simply select the **blank value** at the top of the drop-down list. This will clear any previous value for the selected contacts.
### Checkboxes
If your custom field is a **single checkbox** and you'd like to clear the value, simply leave the checkbox unchecked and then click **Update**. This will leave the box unchecked for all selected contacts.
If your custom field contains **multiple checkboxes** (multiselect), first check the value(s) you want to clear and then click **Remove selected options**. For instance, as shown below, checking the value **"Labor"** and then clicking **Remove selected options** will clear "Labor" from all selected contact records but leave all other checked boxes untouched.
# Scrolling and paging through search results
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/scrolling-paging-results
## Overview
Running a search is a great way to narrow down the contact records you're working with – instead of wading through every record in the project, with search results you'll see just the contacts you're interested in.
However, even after running a search, you may still have a large number of contacts included in the results. This article will help you learn to navigate those records.
## The search results page
We'll begin by getting to know the search page. There's a lot of information displayed here. There are also helpful tools for navigating – you just need to know where to look. Below we look at four areas of the search results page.
### 1. Contacts
### 2. Result count and page range
The search results header shows two pieces of information side by side:
* **Total count** - a large, prominent number with an entity label that reflects what is in your results. If all matched records are people it shows "people" (for example, "121 people"); if all are organizations it shows "orgs" (for example, "37 orgs"); for any mix of record types it shows "contacts".
* **Page range** - a smaller "Showing X-Y" indicator that updates as you page or scroll through results.
### 3. Contact records shown per page
### 4. Page navigation
### 5. Infinite scroll toggle
The **Infinite scroll** () toggle switch is in the search controls bar at the top right of the results. When on (the default), Broadstripes automatically loads more records as you reach the bottom of the visible results. Toggle it off to keep results on individual pages and navigate with the page controls instead. Your preference is saved automatically and applies to all future searches.
## Scrolling through results
You can **scroll down** through your search results in a few ways:
> * use your keyboard's **down arrow** or **page down key**.
> * use your **mouse** to scroll down, just as you would with any other web page.
> As you scroll down, Broadstripes **dynamically loads additional records** as you reach the end of your search results. The page range beside the result count updates as more records load (for instance "**Showing 1-20**" will change to "**Showing 1-40**") so you can always see which records are currently displayed. To turn off infinite scrolling and navigate page by page instead, use the **Infinite scroll** toggle in the search controls bar.
> You can keep the header information visible even as you scroll down the search results by clicking the "**magic header"** button. This will "lock" the labels in place at the top of the page.
## Paging through results
If you want to move more quickly through your search results, you can view them a page at a time. First, set the number of results you want to see per page using the **20 / page** drop-down menu in the search controls bar at the top of the page.
Next, use the **page navigation tool** in the search controls bar to move from page to page.
You can either **type the page number** you want to view and click **Go** to jump there, or use the navigation arrows. Click the **right-facing arrow** to step forward one page at a time, or click the **double right-facing arrow** to go to the very last page of your search results. (Move backward through your results using the and **paging arrows**.)
# Selecting (and deselecting) contacts
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/selecting-deselecting-contacts
## Intro
When working with the contacts in your search results, you may decide that you want your actions to apply to every contact record returned in the search results, or you may want to include just certain records (and exclude others).
This article will show you how to **select (and deselect) contact records** before [applying an action](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions) to them.
## Get started
1. To select contacts, start by **running a search** to filter for just the contacts you want to work with. (Learn more about creating and saving searches in the [Search builder how-to article](/docs/search/search-builder-build-an-advanced-search)).
2. When the search results appear, you'll see the **selection tools** in the toolbar above the search results.
3. The **selection tools** offer two choices:
* click **all** to select all of the records in the search results
* click **page** to select only the records shown on the current page of the search results
* to **deselect** the records, click again on either "all" or "page"
These selection options are explained in [more detail](#select-the-current-page) below.
4. You can also [select contacts manually](#select-or-deselect-contacts-manually) as explained below.
5. Once you've selected the contact records that you want, Broadstripes **places a check** next to their name on the search results panel, indicating that they're selected.
6. A **badge** will also appear on the menu bar showing the number of records included in your selection.
This **badge** shows that from all the search results, 20 contact records have been selected.
## Selection options (details)
### Select the current page
Clicking **page** from the **selection tools** will select just the results that appear on the page you are currently viewing.
For instance, in the figure below, you are looking at page **1 of 15**, which contains contacts **1-20 (of 283)**. Choosing **page** will select only these 20 visible contacts to be included in your bulk action.
As you may have noticed when using the search results page, Broadstripes dynamically loads additional records as you page down through your search results.
***Example:*** Page 1 might have included 20 records when it was first loaded, but as you scrolled down the page, it grew to include 35 records.
This is important to note since choosing **page** will select every record *currently* included on the visible search results page. This means that for the example above, 35 (not 20) records will be selected for a bulk action.
### Select all results
Choose **all** to select every record returned in the search results.
For example, in the figure below, choosing **all** will select all 283 contacts to be included in your bulk action.
### Deselect records
To **clear/deselect selected records**, just click again on whichever button you've selected ("**all**" or "**page**").
When you initially chose "**all**" or "**page**," Broadstripes added a checkbox next to each of the selected records in the search results list below; clicking again on the selected button ("**all**" or "**page**") clears those checkboxes so that no records are selected.
This feature is important when you need to change your selection (for instance to change from selecting all results to manually choosing just a few).
### Select (or deselect) contacts manually
The last method for choosing contact records for a bulk action is to **manually check (or uncheck)** the checkbox next to the contact's name. While this can be time-consuming for selecting a large number of records at once, it is a simple way to choose just a few records.
# Using keyboard shortcuts
Source: https://help.broadstripes.com/docs/viewing-search-results-and-edit/use-keyboard-shortcuts
## Keyboard shortcuts have been removed
The single-key keyboard shortcuts that were previously available in the search results view (such as pressing **/** to focus the search box, **q** for quick search, **a** to select all results, and others) have been removed from Broadstripes.
These bare-keystroke shortcuts could interfere with normal typing in input fields and other parts of the app, and have been discontinued. All of the actions they triggered remain available through the standard search results toolbar and menus.
## Available keyboard shortcuts
Although the old bare-keystroke shortcuts are gone, Broadstripes supports the following modifier-key shortcuts that are safe to use in any context:
| Shortcut | Action |
| ----------------------------------------------- | ------------------------------------------------------------------ |
| **Alt+Q** (Windows/Linux) / **Control+Q** (Mac) | Open the [Quick check-off](/docs/customize/quick-check-off) dialog |
The Quick check-off shortcut is an accelerator for the **Quick check-off** link in the sidebar, so it only works where that link appears. Read-only users and projects that have no event steps don't see the link, and the shortcut does nothing for them.
# Add a new person
Source: https://help.broadstripes.com/docs/working-with-records/add-a-new-person
If you are entering a *new* person or *new* organization in Broadstripes, click **Person** or **Organization** from the CREATE A NEW section of the toolbar on the left-hand side of your window as shown below.
Create a new record for a person or org by using the links in the left navigation panel.
# Add a shop or department (organization)
Source: https://help.broadstripes.com/docs/working-with-records/add-a-shop-or-department
Shops, departments, or sub-departments, broadly termed "organizations" by Broadstripes, are usually created in one of two ways:
* **during data import** using a worker spreadsheet with employment information
* **manually** (either before or after importing data) using the **CREATE A NEW ...** link in the Broadstripes toolbar
This article will look at creating new organizations manually using the **CREATE A NEW ...** link after data has been imported, as in the case where a shop is adding a new department or sub-department.
To learn about creating organizations *during* import, see the [data import overview](/docs/data-import-admin/data-import-overview) articles of the knowledge base.
## Create an organization manually
In this example, we'll be adding a new sub-department called "**4th Floor**" to the **Pediatrics** department in our hospital structure.
**Note** that since how you build and label the tiers of your shop or department hierarchy is all customizable (ours is set up for a hospital with departments and sub-departments), your choices may look different than ours.
1. To start, click the appropriate organization link under the “CREATE A NEW …” header in the left-hand navigation panel.
1. **Add** the new organization and specify a **Parent Organization**. Here's a simple look at our shop structure:
This means that when adding "**4th Floor**", we need to specify "**Pediatrics**" as the “**Parent Organization**,” so that the 4th Floor sub-department is placed *under* Pediatrics (and not placed on the same tier as Pediatrics and Emergency Room).
1. **Add additional information** about the organization. Use the lower portion of the **New Department form** to record any other notes or information you want to track about the organization you are adding.
2. Click **Save** to add the new organization to your project.
3. **Add workers** using a bulk action. Since you've manually added this new sub-department after importing your worker lists, you'll need to assign workers to that employment using a **bulk action**. You can learn more about this in the [bulk actions](/docs/viewing-search-results-and-edit/bulk-actions/bulk-actions-change-employment-info) section of the knowledge base.
# Add, Edit or Delete an Address
Source: https://help.broadstripes.com/docs/working-with-records/add-edit-or-delete-an-address
Broadstripes allows you to record any number of addresses for each person in your project. You can save a home, business, or other address, and also keep track of addresses you want to flag as unusable or "bad." Broadstripes even tracks the changes you or others have made to each address record, so you have a full history of what's been imported or manually updated over time.
This article will take you through the steps of how to **add, update,** or **delete an address** for a person or organization.
You can check out the [**Components of the Address Form article**](/docs/working-with-records/components-of-the-address-form/) if you'd like to get a more in-depth look at all aspects of Broadstripes addresses, including:
* how to understand each section of the **address form**
* recording and displaying **primary** and **secondary addresses**
* **geocoding** and **mapping** addresses
* tagging **bad addresses**
* how the **address change history panel** works
## Add a new address
1. For this example, we'll be adding an address to the record of an **existing person** in our project. (If you want to [add a new person](/docs/working-with-records/add-a-new-person/), or [add a shop or department](/docs/working-with-records/add-a-shop-or-department/), that's fine. Once they are set up, the process of adding an address will be the same.)
2. Start by **running a search** to filter for just the contact whose address you want to work with. (Learn more about creating custom searches in the [Search](/docs/search/search-builder-build-an-advanced-search/) articles).
3. From the search results, **click** the **Quick view icon** () next to the worker's name. The **Quick view** dialog will appear, showing the worker's contact details including their addresses.
4. In the dialog, **click** the **Addresses** section header (which displays a **pencil icon**) to open the address form.
5. The **address form** will open in a dialog. The person's name appears in the dialog header.
6. Click the **+Add address** button to create an additional address record for this person. (If you want to edit the existing record instead, jump to the **Edit an Address section**).
7. In the new address section that appears, use the **address type dropdown list** choose **Home**, **Business**, or **Other**.
8. Click the **star** to the left of the address if you want Broadstripes to use this address as the main address for this person (for instance on maps, search result layouts, and exported spreadsheets). The star turns gold, and the star on the address that was previously primary is automatically cleared. Leave the star unset if the new address is a secondary address for this person.
9. **Type** the new address into the empty address pane.
10. You can add an optional **Note** below the address to help other organizers (e.g. "Doorbell doesn't work; try knocking").
11. When your address is complete, click the **Validate and map** button. Clicking **Validate and map** signals Broadstripes to do two important tasks:
* **Validate** the address against a database of current US Postal Service (USPS) addresses to verify it as a deliverable address.
* "**Geocode**" the address, essentially locating its GPS coordinates so that Broadstripes can generate highly accurate maps and driving directions.
12. Next, review Broadstripes' system-generated comments below the address pane to confirm that the validation and mapping process was a success. Here's how to interpret some common comments:
* **Address has been mapped:** This address is valid and needs no further attention
* **The address could not be verified as entered and may not be deliverable by the post office:** This address may contain a typo or be outdated; you may want to manually flag it by checking the "**Needs review**" checkbox to remember to correct it later. Depending on your organization's data entry policies, you may also want to flag it by checking the "**Bad**" checkbox which will cause the address to be displayed with strikethrough, and prevent it from being displayed on a map or exported to spreadsheet from the search results.
* Other warnings, such as "**The street was found, but not the number**" are also indications that the address you've entered is inaccurate. Follow your organization's rule of thumb to mark these correctly.
13. When you are satisfied with your work, click **Save** at the bottom of the address form\*\*.\*\*
## Edit an existing address
#### Manually saved addresses are protected from import overwrites
When you manually save changes to an address, Broadstripes treats it as **user-confirmed data** and protects it from being overwritten by future imports. If the same address appears in a subsequent data import, Broadstripes will skip it and keep your edited version instead.
1. To edit an address, start by running a search to filter for just the contact whose address you're working with (Learn more about creating custom searches in the [Search](/docs/search/search-builder-build-an-advanced-search/) article).
2. From the search results, **click** the **Quick view icon** () next to the worker's name. The **Quick view** dialog will appear, showing the worker's contact details including their addresses.
3. In the dialog, **click** the **Addresses** section header (which displays a **pencil icon**) to open the address form.
4. The **address form** will open in a dialog. The person's name appears in the dialog header.
5. **Place your cursor** in the **address pane** of the address you want to edit and **type** any changes. You can also click the **star** to set or change the primary address, or add a note.
6. When your edits are complete, click the **Validate and map** button to locate the updated address in a database of current US Postal Service and verify its GPS coordinates for display on maps and driving directions.
7. Next, review Broadstripes' system-generated comments below the address pane to confirm that the validation and mapping process was a success. Here's how to interpret some common comments:
* **Address has been mapped:** This address is valid and needs to further attention
* **The address could not be verified as entered and may not be deliverable by the post office:** This address may contain a typo or be outdated; you should manually flag it by checking the "**Needs review**" checkbox to remember to correct it later. Depending on your organization's data entry policies, you may also want to flag it by checking the "**Bad**" checkbox which will cause the address to be displayed with strikethrough, and prevent it from being displayed on a map or exported to spreadsheet from the search results.
* Other warnings, such as "**The street was found, but not the number**" are also indications that the address you've entered is inaccurate. Follow your organization's rule of thumb to mark these correctly.
8. When you are satisfied with your address updates, click **Save** at the bottom of the address form.
## Delete an existing address
If you have an address that you want to **completely eliminate** from a person's record rather than edit or mark as bad, you can choose to delete it. History of the deletion will not be shown in the address history pane. (If you have questions or want more information on working with addresses and specifics about how Broadstripes handles address data and tracks change history, check out the **Components of the Address Form** article.)
1. To delete an address, start by **running a search** to filter for just the contact whose address you want to delete (Learn more about creating custom searches in the [Search](/docs/search/search-builder-build-an-advanced-search/) articles).
2. From the search results, **click** the **Quick view icon** () next to the worker's name. The **Quick view** dialog will appear, showing the worker's contact details including their addresses.
3. In the dialog, **click** the **Addresses** section header (which displays a **pencil icon**) to open the address form.
4. The **address form** will open in a dialog. The person's name appears in the dialog header.
5. **Click** the **Trash** icon on the right of the specific address you want to delete. The address will appear struck through with a **removed** label and an **Undo** link. If you change your mind before saving, click **Undo** to restore it.
6. If you want to delete **multiple addresses** for a single person, you'll need to **repeat** this process for each address.
7. When you are satisfied with your deletions, click **Save** in the dialog footer.
# Components of the Address Form
Source: https://help.broadstripes.com/docs/working-with-records/components-of-the-address-form
Broadstripes uses powerful logic that helps you get the most out of the contact information you collect. Whether you are entering worker records through an import, or entering records manually, address information is key data – and you can view, enter, update, or delete any of it from the **address form**.
In this article, we'll take a closer look at how Broadstripes collects, displays, and utilizes the information in the **address form** including:
* recording and displaying **primary** and **secondary addresses**
* **geocoding** and **mapping** addresses
* tagging **bad addresses**
* tracking **address change history**
We'll start by opening the address form:
## Open the address form
1. The address **form** allows you to view or edit a person's complete address record.
2. For this example, we'll be looking at the **address form** of an **existing person** in our project. (If you want to [add a new person](/docs/working-with-records/add-a-new-person/), or [add a shop or department](/docs/working-with-records/add-a-shop-or-department/), that's fine. Once they are set up, their address forms will be identical.)
3. To open the form, start by **running a search** to filter for just the contact whose address you want to work with. (Learn more about creating custom searches in the [Search](/docs/search/search-builder-build-an-advanced-search) articles).
4. From the search results, **click** the **Quick view icon** () next to the worker's name. The **Quick view** dialog will appear, showing the worker's contact details including their addresses.
5. In the dialog, **click** the **Addresses** section header (which displays a **pencil icon**) to open the address form.
6. The **address form** will open in a dialog. The person's name appears in the dialog header.
## Parts of the address form
Broadstripes gives you a lot of information to look at on the address form. Let's break it down so you know your way around.
### 1. Address pane
Broadstripes allows you to record an unlimited number of addresses for each person in your project. Each address will be displayed in its own pane. If you're editing an address, just place your cursor in address pane and type your changes.
You can use the drop-down menu above the address pane to specify if the address is for **Home**, **Business**, or **Other**. You can also add a **Note** below the address to help other organizers (e.g. "There's an unchained dog in the back yard" or "Lives with mother who usually answers the door").
**Address card action icons**
Each address card has three action icons on the right side:
* **Copy** (): Copies the full address text to your clipboard. This icon appears only when the address card is collapsed.
* **History** (): Opens the change history panel for that address. The small number next to the icon shows how many history entries exist. See [History panel](#4-history-panel-and-locked-indicator) for details.
* **Delete** (): Permanently removes the address from this person's record. This icon is hidden on addresses that are locked by an external system.
When you expand an address card for editing, the copy icon is replaced by a **Collapse** button () that returns the card to its compact view.
### 2. Validate and map
Each time you enter or edit an address, you'll need to validate and map it. Clicking the **Validate and map** button signals Broadstripes to do two important tasks:
1. **Validate** the address against a database of current US Postal Service (USPS) addresses to verify it as a deliverable address.
2. "**Geocode**" the address, essentially locating its GPS coordinates so that Broadstripes can generate highly accurate maps and driving directions. A green **Mapped** pin in the address card header indicates an address that has been geocoded (click it to open the address in Google Maps); a gray **Not mapped** pin indicates one that has not.\\
### 3. Informational messages and flags
Broadstripes displays messages near the address pane if there's something that needs your attention.
* "**Address has not been validated and mapped**": This message simply reminds the user that they have not yet clicked the **Validate and map** button, so Broadstripes has not yet processed the address. The message will disappear when the user clicks the button and Broadstripes launches its validation process.
* **Address has been mapped:** This address is valid and needs no further attention.
* **The address could not be verified as entered and may not be deliverable by the post office:** This address may contain a typo or be outdated; you may want to manually flag it by checking the "**Needs review**" checkbox to remember to correct it later. Depending on your organization's data entry policies, you may also want to flag it by checking the "**Bad**" checkbox which will cause the address to be displayed with strikethrough, and prevent it from being displayed on a map or exported to spreadsheet from the search results.
* Other validation and mapping warnings, such as "**The street was found, but not the number**" are also indications that the address you've entered is inaccurate. Follow your organization's rule of thumb to flag these correctly.
* “**Needs review**”: This flag (check box) is generally set by Broadstripes during a data import if an issue is encountered during the process of USPS-validating and geocoding an address. Sometimes an accompanying note will provide additional information about the exact issue encountered. You can also check the "**needs review"** flag **manually** to flag addresses about which you aren’t confident. The "needs review" flag has no effect on the address (it will still appear in maps and exports) — it’s simply a way to flag an address for later follow-up and verification.
* **Primary star** (): The gold star marks the person's **primary address** — the one Broadstripes uses for maps, mailing layouts, and data exports. Each person can have only one primary address. To change it, click the star next to a different address; Broadstripes will automatically promote that address to primary and use it going forward.
**How primary address works during data import**
When you import addresses via spreadsheet, Broadstripes will **never override** an existing primary address. If a person already has a primary address, imported addresses are added as secondary addresses.
If no primary address exists yet, Broadstripes automatically assigns one using this preference order:
1. Non-bad addresses first (bad addresses are never auto-assigned as primary)
2. Geocoded addresses first
3. Address type: Business → Home → Other
There is no column available in the spreadsheet import to explicitly set an address as primary. To set or change a primary address, use the address form after import.
* "**Bad**": In some cases, you may want to retain the details of an address even though you know it is not a valid or accurate address. For instance, this feature can be really useful in helping you catch (and disregard) the address if it ever appears again in an import or another list used by your campaign. Flagging an address as “**Bad**” will cause the address to be displayed with a red strikethrough in the address form and in the Quick view popover, and prevent it from being displayed on a map or exported to spreadsheet from the search results (unless the export layout is specifically set up to include the column "Addresses - Bad").
* **"Item is a duplicate for this contact"**: A red warning banner appears on an address card when Broadstripes detects that the same address already exists elsewhere on the contact's record. The comparison is case-insensitive and ignores punctuation and spacing, so "123 Main St" and "123 main st." are treated as the same address. The banner is visible even when the card is collapsed, so you can spot duplicates at a glance. To resolve the warning, delete one of the duplicate addresses.
### 4. History panel and Locked indicator
Broadstripes knows how important address information is to your campaign. The **history panel** was introduced to help retain a record of all changes applied to a person's address data. Each time an address is created, modified, or matched during import, a new record is added to the history.
You can **expand all the history records** by clicking on the expand icon, or **expand an individual history record** by clicking on the down arrow icon.
**Locked indicator:** When an address is sourced from a locked external system — such as a payroll database, HR platform, or membership system — a **Locked** label appears at the top of the address pane. The name of the external system is displayed next to the label. Locked addresses cannot be edited in Broadstripes; they are updated only when data is synced from the source system.
### 5. View components
Clicking the **View components** button switches the address editor to a component view, displaying each part of the address in its own field (e.g. Street Name, Street Type, Street Number, Unit). In some cases, seeing the data in this format can help you troubleshoot a problematic address. You can also edit individual fields directly in this view. When you are done, click **Hide components** to return to the standard text editor and apply your changes.
## Learn more
Now that you know your way around addresses, learn the basics of adding, editing or deleting addresses in this article:
* [Add, edit or delete addresses](/docs/working-with-records/add-edit-or-delete-an-address/)
# Merging contacts
Source: https://help.broadstripes.com/docs/working-with-records/merging-contacts
Combine duplicate contact records into a single record
Merging contacts allows you to combine two duplicate records (whether people or organizations) into a single, unified record. This process consolidates all information from both records, helping you maintain clean and accurate data in Broadstripes.
When you merge contacts, one record becomes the "survivor" (the record that will remain and whose data will take precedence) and the other becomes the record to be deleted. Data from the deleted record is transferred to the survivor record before the deletion occurs.
**This action cannot be undone**
Once you merge two contacts, the deleted record is permanently removed from Broadstripes. Make sure you've chosen the correct survivor record before proceeding with the merge.
## Prerequisites
Before you can merge two contacts, the following conditions must be met:
* Both contacts must be the same type (both must be people OR both must be organizations)
* You must have permission to merge contacts. Project admins always do; a basic user can be granted it by a project admin checking **Can merge contacts** on that user's membership settings (it then shows as the **Merge Contacts** flag on the members list).
## Understanding the merge process
When you merge contacts, Broadstripes follows specific rules to determine what data is kept:
**The survivor's data takes priority** - If both contacts have values in the same field, the survivor's value is kept and the other contact's value is discarded.
**Empty fields are filled** - If the survivor has a blank field but the deleted contact has a value in that field, the value from the deleted contact is used to fill the blank. *See exceptions below.*
**Notes are combined** - Unlike other fields, notes from both contacts are merged together with a separator line between them, preserving information from both records.
**Contact information is deduplicated** - Phone numbers, email addresses, and physical addresses are transferred to the survivor, but duplicates are automatically skipped.
## What gets merged
When you merge two contacts, the following information is transferred from the deleted contact to the survivor:
* **Contact information** - Phone numbers, email addresses, and physical addresses (duplicates are skipped)
* **Relationships** - All relationships between the contact and other people or organizations
* **Employments** - Employment records and workplace associations
* **Group memberships** - Membership in social groups
* **Attachments** - Files and documents attached to the contact
* **Messages** - Email and text message history
* **Contact timeline entries** - Notes and activity logs
* **Custom field values** - Data stored in your project's custom fields
* **Survivor value takes priority.** If the survivor has a value, that value is kept. If the survivor's custom field is blank and the TBD has a value, the TBD's value is copied to the survivor. Here are the exceptions:
**1. Text Area Custom Fields (Multiline)**
**Both values are merged** with a separator if both entities have values:
```
----------------
```
This ensures no data is lost from multiline text fields.
**2. Multiple Select Custom Fields**
Survivor value is kept; TBD value is ignored even if different options are selected.
* **Events** - All event steps and timeline activities
* **Lists** - All unique list memberships from both entities are preserved
### Special handling for organizations
When merging organization records, these additional items are also transferred:
* **Child organizations** - Any sub-departments or shops under the organization
* **Mapping groups** - Geographic mapping associations
* **Employee data** - All workers employed by the organization
## How to merge contacts
You can merge contacts from two locations in Broadstripes: the search results page or the Shops and Departments page.
### From the search results page
1. **Search for the contacts** - Generata a search to find the two contacts you want to merge. Make sure both contacts appear in your search results.
2. **Select the contacts** - Check the boxes next to both contact records you want to merge. You must select exactly two contacts of the same type (both people or both organizations).
3. **Open the Actions menu** - Click the **Actions** button at the top of the search results page.
4. **Select Merge contacts** - From the Actions dropdown menu, choose **Merge contacts**.
5. **Choose the survivor record** - A Merge contacts panel appears showing both contact records. Select which contact should be the survivor (the record that will remain and whose data will take precedence). The other contact will be deleted after the merge.
6. **Confirm the merge** - Once you're satisfied with your selections, click the **Merge people** or **Merge organizations** button to proceed. Broadstripes will:
* Transfer all data from the deleted contact to the survivor where applicable
* Update all references and associations
* Permanently delete the duplicate contact
### From the Shops and Departments page
1. **Navigate to the Shops and Departments page** - Click **Shops and Departments** in the navigation panel on the left side of Broadstripes.
2. **Select the organizations** - Check the boxes next to the two organization records you want to merge. You must select exactly two organizations.
3. **Open the Actions menu** - Click the **Actions** button at the top of the page.
4. **Select Merge** - From the Actions dropdown menu, choose **Merge**.
5. **Follow the merge process** - Continue with steps 5-7 from the "From the search results page" section above. The merge dialog and confirmation process works the same way for organizations.
## Important considerations
**Messaging permissions**
The survivor record’s messaging permissions always take precedence.
* If the survivor is opted in and the TBD record is opted out for the same phone number or email address, the survivor will remain opted in.
* If the survivor is opted out and the TBD record is opted in, the survivor will remain opted out.
This is important because merge decisions can unintentionally change whether a contact receives emails or SMS messages. Always confirm that the survivor’s opt‑in/opt‑out status reflects the person’s current communication preferences.
**Primary contact information** - The survivor's primary phone number, email address, and physical address will remain marked as primary after the merge, even if the deleted contact had different primary contact information.
**Field-by-field priority** - For most fields, if both contacts have data, only the survivor's data is kept. Review both records carefully before merging to ensure the survivor has the most accurate information in critical fields.
**Custom fields** - Custom field values follow the same rules as standard fields: the survivor's values take priority, and blank fields are filled with values from the deleted contact. *There are exceptions to this rule listed above.*
## Tips for successful merging
* **Choose the survivor carefully** - Select the record with the most complete and accurate information as the survivor. This minimizes data loss.
* **Review before merging** - Take a moment to compare both records before starting the merge process. You may want to manually update the survivor with important information from the duplicate record before merging.
* **Consider the Broadstripes ID** - Users may recognize one contact's Broadstripes ID more than the other. Consider which ID will be easier for your team to remember.
* **Check relationships** - If the duplicate contacts have different relationships or employments, verify that combining them makes sense for your organizing work.
* **Make notes** - If you're consolidating records with significantly different information, consider adding a note to the survivor record explaining what was merged and when.
## Troubleshooting
**I can't find the merge option** - If you don't see the merge function, you may not have the necessary permissions. Contact your project administrator to request merge permissions.
**The merge is blocked** - If you receive an error when attempting to merge, verify that both contacts are the same type (both people or both organizations) and belong to the same project.
**Important data was lost** - Because merges cannot be undone, it's critical to review both records before merging. If you've lost important information, you may need to manually re-enter it into the survivor record.
# Working with flexible contact info columns
Source: https://help.broadstripes.com/docs/working-with-records/working-with-flexible-contact-info-columns-video
Learn how to use flexible contact info columns to display phone and email data on the fly
## Flexible Contact Info Columns
# Workplace Explorer
Source: https://help.broadstripes.com/docs/working-with-records/workplace-explorer
Explore your organization's structure and worker distribution in an interactive visual chart on any organization's Explorer tab.
## Overview
The **Workplace Explorer** is an interactive visual chart you can open from any organization's **Explorer** tab. It displays the org hierarchy as nested circles -- each organization is a large circle, and the workers employed there appear as smaller dots inside it. Sub-organizations appear as nested rings within their parent, so the full reporting structure is visible at a glance.
You can zoom in to any part of the hierarchy, pan the chart freely, color the workers by their assessment code (or, on labor-organizing projects, by role or leadership count), click any worker or sub-org to open its Quick view, and (on labor-organizing projects) drag a worker circle onto another worker to assign leadership.
The Explorer tab appears on an organization's page only when your project has the Employment feature enabled.
## Opening the Explorer
1. Navigate to any organization's record page.
2. Click the **Explorer** tab in the tab bar across the top of the page.
The chart loads the full subtree rooted at that organization. For large organizations (over 1,500 workers), the chart starts in **count mode**: each org circle is sized by its worker count rather than showing individual dots. Zoom into a sub-org to load and display its individual workers.
## Navigating the chart
### Zoom in
Click any organization circle to zoom in and focus the chart on that sub-organization. The focused org expands to fill the chart and its name appears in the toolbar's breadcrumb.
### Zoom out
Click **Zoom out** () in the floating toolbar to move focus up one level in the hierarchy.
### Browse the hierarchy path
The toolbar shows the name of the currently focused organization. Click it to open a dropdown listing your full ancestor path from the root down to the current focus. Click any entry in the list to jump directly to that level.
### Pan the chart
Click and drag the chart background to pan the view. A **Re-center** () button appears in the toolbar when the chart has been panned away from its centered position -- click it to snap the focused org back to center.
### Full-screen mode
Click **Full screen** () in the toolbar to expand the Explorer to a full-window overlay, hiding the page header and sidebar so the chart fills your entire browser window. Press **Escape** or click **Exit full screen** () to return to the normal view.
## Color by dimension
The workers in the chart are colored by a dimension you choose in the toolbar's **Color by** dropdown. The active dimension's legend appears directly below the dropdown (collapse or expand it with the arrow next to the legend heading).
Available dimensions:
* **Assessment** (default) -- each worker dot is colored by their current assessment code.
* **Role** -- each worker dot is colored by their organizing role. *(Requires the Labor Organizing feature.)*
* **Leadership** -- each worker dot is shaded by how many workers they directly lead, from lighter (fewer) to darker (more). *(Requires the Labor Organizing feature.)*
Workers who have no value in the active dimension appear in neutral grey.
## Search within the subtree
The search box at the bottom of the floating toolbar lets you find a specific person or organization anywhere within the currently rooted subtree.
* Click into the search box and type a name to see matching people and organizations.
* Select a result to jump to it: choosing an **organization** zooms into that org; choosing a **person** zooms to their employing org and opens their Quick view.
## Quick view
Click any worker dot or organization circle to open its **Quick view** panel. The Quick view shows contact information, timeline entries, organizing details, and quick-action links for that person or organization, just as it does elsewhere in Broadstripes.
## Moving the toolbar
The floating toolbar panel can be dragged to any position on the chart. Click and hold the **grip handle** () at the left edge of the toolbar and drag it to a new location.
## Assign leadership by dragging
This feature requires the Labor Organizing feature to be enabled on your project.
When Labor Organizing is enabled, you can assign a leadership relationship directly in the Workplace Explorer by dragging one worker onto another.
1. Hover over the worker you want to assign a leader to. Worker circles show a grab cursor () when they can be dragged.
2. Click and drag that worker. A translucent puck labeled with the worker's name follows your cursor.
3. Drag over the worker you want to make their leader. That worker's circle highlights with a blue ring to indicate it is the active drop target.
4. Release. A confirmation dialog appears before any assignment is saved. Review the assignment and confirm or cancel.
### Confirming a leadership assignment
Every drop shows a confirmation dialog before the assignment is saved. The dialog adapts depending on whether the dragged worker already has a leader:
* **Assign leader?** -- The dragged worker has no existing leader. The dialog asks you to confirm making them the follower of the drop target. Click **Assign** to save, or **Cancel** to leave everything unchanged.
* **Reassign leader?** -- The dragged worker already has a different leader. The dialog shows that leader's name, employer (when on file), and the date the relationship was assigned, so you can confirm you are reassigning the right person. Click **Reassign** to save, or **Cancel** to leave everything unchanged.
# Enhancements, updates, and bug fixes for Broadstripes
Source: https://help.broadstripes.com/release-notes/release-notes
A chronological table of updates and improvements to Broadstripes. Use the filters below to find specific items.
# Site Map
Source: https://help.broadstripes.com/sitemap
Complete list of all pages in the Broadstripes Help Center
This page lists all documentation in the Broadstripes Help Center, organized by section.