Home User activities

User activities

Learn how to track and analyze user activities to identify trends, popular events, and areas for improvement on your website.
By Crowd team
6 articles

Integrate User Identification with Crowd

Discover personalized insights with Crowd’s user identification! Transform anonymous clicks into a rich, unified user profile that powers your app’s analytics. This article will walk you through seamlessly integrating Crowd’s identification into your application or website, connecting every visit, event, session recording, and heatmap to a single, actionable profile, starting the moment a user signs up, logs in, or is recognized. 1. Why Identify Users? Integrating user identification links pre-login (anonymous) activities to post-login (identified) profiles in your app, enabling: - A unified view of user behavior in funnels, cohorts, and dashboards. - Accurate session recordings and heatmaps tied to a single user. 2. Methods to Integrate Identification 2.1 Identify with JavaScript Use the crowd.identify() method to identify users dynamically in your application. crowd.identify("user_123", { email: "jane@acme.com", plan: "pro", // String is_admin: false, // Boolean signup_at: 1704067200000, // Number (epoch ms) name: "Janet Jackson" }); - When to Call: Once per session, ideally after login or signup. - Key Notes: - Crowd automatically deduplicates multiple calls. - Pass stable traits (e.g., plan, is_admin). Volatile data should be tracked as events. - Logout or Account Switch: crowd.reset(); - crowd.reset() clears the Crowd cookie and assigns a new anonymous ID (anon_), preventing profile merging on shared devices. - Always call reset() on logout to avoid mixing events between accounts. 2.2 Identify with HTML Attribute (No JavaScript Build) For static sites without JavaScript builds, use the data-crowd-user attribute. <meta data-crowd-user='{"id":"user_123","email":"jane@acme.com"}'> - How It Works: The Crowd SDK automatically detects this attribute on page load and runs identify() for you. - Use Case: Ideal for basic identification on simple websites. 2.3 Identify with Server-Side / cURL Use this method when a backend process (e.g., OAuth callback) identifies the user first. curl -X POST https://api.crowd.com/identify \ -H "Content-Type: application/json" \ -H "X-Crowd-Key: YOUR_SERVER_KEY" \ -d '{ "website": "YOUR_PUBLIC_ID", "user_id": "user_123", "traits": {"plan": "pro"}, "timestamp": "2025-05-20T14:16:00Z" }' - How It Works: Crowd merges existing anonymous sessions (same browser fingerprint) into the identified profile (user_123). - Use Case: Useful for server-side user identification in your app. 3. Verify Identification in Crowd To confirm the integration worked: 1. Go to User activities > Users in the Crowd dashboard. 2. Refresh and search for the user ID (e.g., user_123). 3. The user profile should now include pre-login events merged from its former anonymous identity (anon_). 4. Best Practices - Use a Durable Key: Use a stable identifier (e.g., database ID or UUID) as the user_id, not an email, which may change. - Always Reset on Logout: Call crowd.reset() on logout or account switch to prevent cross-account mixing on shared devices. - Send Key Traits Consistently: Include essential traits (e.g., plan, country) in every identify() call—Crowd will upsert them. - Avoid Unnecessary PII: Don’t send sensitive data (e.g., full addresses); hash data if required for compliance. 5. Next Steps After integrating identification, set up events to track user actions and create funnels. Refer to the Track an Event in Crowd - Quick Start Guide and the Creating Funnels on Crowd guide for details. For further assistance, check the full API reference or contact support via the in-app chat. 6. Troubleshooting - No user appears after identify(). Symptom: No user appears after calling identify(). Likely cause: This might be due to a wrong projectId or an ad-blocker blocking the endpoint. Fix: Check the snippet ID and whitelist api.crowd.com. - Two accounts merged. Symptom: Two accounts are merged. Likely cause: This is likely because reset() was not called on logout. Fix: Add crowd.reset() before redirecting to the login page. - Traits missing. Symptom: Traits are missing. Likely cause: This could be caused by mixed types across calls (e.g., plan as string then number). Fix: Keep trait types consistent, as the last write wins. - 401 on API call. Symptom: You get a 401 on an API call. Likely cause: It’s probably because the X-Crowd-Key header is missing. Fix: Use a server key for backend requests. 5. Glossary - anon_xxx: Temporary ID assigned to a user on their first visit. - user_: Stable ID you provide during identification.* - crowd.reset(): Clears the cookie and starts a new anonymous ID—use on logout or account switch.

Last updated on May 27, 2025

Tracking Events on your Website

Events in Crowd capture user actions like button clicks, checkout completions, or feature usage. They power funnels, cohorts, dashboards, and alerts, providing insights into the complete user journey, both before and after identification. This guide explains how to track events effectively. 1. Why Track Events? Events help you: - Understand user behavior (e.g., what features are used most). - Build funnels to measure conversions (e.g., signup to activation). - Create cohorts (e.g., power users with high event counts). - Set up dashboards and alerts for real-time insights. 2. Methods to Track Events 2.1 Track with HTML Only Add the data-crowd-event attribute to any element to capture clicks automatically. <button data-crowd-event="signup_clicked">Sign up</button> - Event Name: Use snake_case for consistency (e.g., signup_clicked). - Add Properties: Include additional details using data-crowd-props (JSON format). <button data-crowd-event="plan_selected" data-crowd-props='{"plan":"pro","discount":"spring"}'> Upgrade to Pro </button> - Use Case: Ideal for static sites or simple click tracking. 2.2 Track with JavaScript Use crowd.track() for dynamic actions like SPA route changes or modal opens. crowd.track("checkout_completed", { amount: 99, currency: "USD", items: 3 }); - Supported Property Types: String, number, boolean, ISO date, array. - Use Case: Best for client-side actions that aren’t tied to DOM clicks. 2.3 Track with Server-Side / cURL Track events from the backend (e.g., billing webhooks) using the HTTP endpoint. curl -X POST https://api.crowd.com/track \ -H "Content-Type: application/json" \ -H "X-Crowd-Key: YOUR_SERVER_KEY" \ -d '{ "website": "YOUR_PUBLIC_ID", "type": "event", "event_name": "checkout_completed", "user_id": "user_12345", "data": {"amount": 99, "currency": "USD"}, "timestamp": "2025-05-20T14:29:00Z" }' - For Anonymous Users: Omit user_id for guest actions (e.g., guest checkout); Crowd associates the event with the current anon_ ID. - Use Case: Ideal for server-side events. 3. Verify Events in Crowd To confirm events are being tracked: 1. Set up events on Crowd 2. Go to User activities > Events > dashboard 3. Look for a green active status 4. Best Practices - Use Descriptive Names: Keep event names short but meaningful (e.g., signup_clicked, not button_clicked). - Avoid Redundant Verbs: Don’t repeat the action context (e.g., prefer signup_clicked over clicked_signup_button). - Don’t Send PII: Avoid sensitive data (e.g., credit card numbers) in properties; hash if necessary. - One Event per Action: Track meaningful actions, not every UI element. 5. Troubleshooting - Symptom: Event doesn’t appear in Live stream - Likely Cause: Ad-blocker blocking domain - Fix: Use a custom subdomain or whitelist api.crowd.com. - Symptom: property missing - Likely Cause: Mixed data types across hits - Fix: Keep the same type per property (string vs number) subdomain or whitelist api.crowd.com.Property missing - Symptom: 401 on curl - Likely Cause: Missing or wrong X-Crowd-Key - Fix: Use the server API key, not the public one. - Symptom: High event count in funnels - Likely Cause: Event fired on both click and route change - Fix: Debounce or choose one trigger. 6. Next Steps With events tracked, you can: - Build a funnel. - Create cohorts (e.g., power users with event_count > 10 in 7 days). 7. Glossary - event_name: A snake_case string identifying the action (e.g., checkout_completed). - properties: JSON key-value pairs describing the event (e.g., {"amount": 99}). - anon_xxx: Temporary profile before identification. - user_: Stable profile after identification.* For more details contact support@crowdapp.io

Last updated on May 27, 2025

User Identity Lifecycle and Best Practices

This guide explains how Crowd manages user identities on your websites, before and after identification, the value of anonymous data, and how to handle account switching on shared devices to maintain clean user profiles. 1. User Identity Lifecycle in Crowd 1.1 Before Identification (Anonymous Stage) - Why Keep Anonymous Data? - Watch session recordings of first-time visitors. - Measure conversion from visit to signup without extra code. - Debug onboarding flows by analyzing early user behavior. 1.2 After Identification Once you identify a user with crowd.identify(): 2. Handling Shared Devices and Account Switching To prevent cross-account mixing on shared devices: 3. ID Prefixes for Clarity Crowd uses prefixes to distinguish user states: 4. Best Practices for a Healthy Workspace - Identify Early: Call crowd.identify() as soon as you have a stable user ID. - Use Durable Keys: Use a database primary key or UUID for the user_id, not an email, which may change. - Include Key Traits: Send important traits (e.g., plan, is_admin) with every identify() call—Crowd upserts them. - Always Reset on Logout: Use crowd.reset() on logout or account switch to avoid profile mixing. - Monitor Anonymous Visitors: Check the Anonymous Visitors cohort in Crowd. A high ratio may indicate missed identify() calls. By following these practices, Crowd will merge sessions, backfill history, and provide a reliable, unified view of each user for your team. 5. Next Steps With user identification set up, explore tracking events to unlock deeper insights. See the Track an Event Guide for more. For further assistance, check the full API reference or contact support.

Last updated on May 27, 2025

What are Events in Crowd

In this article, we’ll provide an overview of what Events are in Crowd and how you can use them to enhance your user insights. What are Events? As users interact with your website, various actions occur—they might click buttons, scroll, or navigate between pages. Your site may also trigger actions like tracking form submissions, monitoring page load times, or detecting user exits. These actions are examples of Events, which can be used to capture specific sessions and filter collected data for deeper insights. To use Events in Crowd, these actions need to be sent from your website to Crowd via the Crowd Events API. This API is available on all pages containing the Crowd tracking script. You’ll need to write custom JavaScript code on your site to send Events to Crowd, which may require a web developer depending on your technical expertise. Haven't started capturing events on your website? See how to set up events here. Do Not Pass Personal Identifying Information as an Event Personal-identifying information (PII) should never be used as Events in Crowd. To connect session data with specific users, explore the User Attributes feature instead. How Can Events Be Used? Events sent to Crowd via the Events API can be utilized in the following ways: - Triggering Session Capture: Events can initiate session capture for Recordings, which also impacts related features like Heatmaps. Note that Crowd automatically starts capturing data once the tracking script is installed, but Events allow you to refine which sessions are prioritized. - Filtering Recordings and Heatmap Data: Filter sessions by Events to focus on specific user interactions. For example, view sessions where a particular Event occurred at any point during the session. Limitation: Heatmap Screenshots It’s not possible to trigger a Heatmap screenshot based on an Event. However, you can filter Heatmap data to include sessions where the Event occurred, showing aggregated user behavior across those sessions rather than at the exact moment the Event fired. Use Cases Below are common use cases for Events in Crowd (not an exhaustive list). Event: logged_in Description: Fire this Event when a user logs in to prioritize session capture for logged-in users and focus Recordings and Heatmaps. Event: variant_x Description: Fire this Event based on the A/B test variant loaded in the browser to filter Heatmaps and compare user behavior across page variants. Event: started_chat Description: Fire this Event when a user opens a chat widget to filter Recordings and analyze sessions of users who used chat. Event: saved_to_wishlist Description: Fire this Event when a user adds an item to their wishlist to compare users who save items with those who don’t and identify conversion opportunities. Event: error_occurred Description: Fire this Event when your site generates an error to filter sessions and help identify and fix UX issues. Event: form_submitted Description: Fire this Event when a user submits a form to analyze successful form submissions and identify drop-off points. Event: page_load_slow Description: Fire this Event when a page takes longer than a set threshold to load to filter Heatmaps and assess user behavior on slow-loading pages. Event: user_exited Description: Fire this Event when a user navigates away from a key page to study exit patterns and improve retention on critical pages. Event: video_watched Description: Fire this Event when a user watches a video to completion to compare engaged users with others and enhance content strategy. Event: clicked_cta Description: Fire this Event when a user clicks a primary call-to-action button to evaluate CTA effectiveness and optimize placement or messaging. Event: scrolled_80_percent Description: Fire this Event when a user scrolls 80% down a page to measure deep engagement and filter sessions showing high content consumption. Event: hovered_product Description: Fire this Event when a user hovers over a product image or card to understand product interest and explore behavior before clicks. Event: pricing_viewed Description: Fire this Event when a user views the pricing page to segment users with purchase intent and analyze conversion paths. Event: search_used Description: Fire this Event when a user uses the site search function to evaluate search behavior and uncover intent-driven sessions. Event: signup_started Description: Fire this Event when a user initiates signup but hasn’t completed it to identify friction points and improve onboarding. Event: coupon_applied Description: Fire this Event when a user applies a discount code to track promo usage and evaluate its impact on conversions. Event: item_removed_cart Description: Fire this Event when a user removes an item from their cart to analyze purchase hesitation and optimize cart experience. Event: shared_content Description: Fire this Event when a user shares content (e.g. via social media) to identify brand advocates and study virality triggers. Event: subscription_upgraded Description: Fire this Event when a user upgrades their subscription to study triggers for upsell and refine pricing strategy.

Last updated on May 27, 2025

How to Set up Events on Crowd

Events in Crowd capture user actions on your app or website, like clicks, form submissions, or errors, unlocking powerful insights when paired with Crowd’s analytics tools. Use events to build funnels, filter user data, or create targeted cohorts. This guide walks you through setting up events using the Crowd Events API, from identifying goals to implementing the code and leveraging events in Crowd. 1. Why Set Up Events with the Events API? The Crowd Events API lets you programmatically send events to Crowd, enabling: - Detailed tracking of user actions (e.g., button clicks, errors). - Filtering of user data to uncover insights (e.g., users who encountered an error). - Building funnels and cohorts based on specific user behaviors. For a broader overview of events, see the Tracking Events on Your Website's Guide. 2. Step-by-Step Setup 2.1 Identify the Main Goals for Your App or Website Start by defining your primary goals. These could include increasing conversions, reducing errors, tracking user engagement, or monitoring A/B test performance. Here are some common use cases to inspire your goals: - Filter user data to compare A/B test variants. - Identify users who encounter errors to debug issues. - Track engagement with key features (e.g., form submissions). 2.2 Decide What Events Support These Goals List specific events that align with your goals. These are the actions you’ll track using the Crowd Events API. Examples include: - A click on a specific button (e.g., "Submit Order"). - An error message being triggered Tie your goals to events. For example: “Track an event when an error occurs (the event) to filter user data and resolve issues (the goal).” 2.3 Implement the Crowd Events API Code The Crowd Events API allows you to send events programmatically. Here’s how to implement the API directly: 1. Add Custom Code: Use the crowd.track() method to send events to Crowd. Depending on your technical expertise, you may need a developer to assist with implementation. 2. Example Code: Below is a sample for tracking whether a payment was added successfully on a checkout page. fetch('/api/add-payment', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(body), }) .then((response) => response.json()) .then((data) => { crowd.track('payment_added_success', { amount: 99, currency: 'USD' }); // Handle backend response. }) .catch(error => { crowd.track('payment_added_failed', { error: error.message }); }); Note: This is an example. Consult your developers to tailor the code to your app’s needs and goals. 2.4 Steps to Modify Created Events on Crowd After creating events, you can edit or archive them directly in the Crowd dashboard. Follow these steps: 1. Navigate to the Dashboard: - Log in to your Crowd account and go to the homepage. - Click on User Activities in the sidebar menu. - From the dropdown, click Events to view your created events. *Screenshot: Shows the Events dashboard listing existing events (e.g., header text on homepage, banner image click) with an "Active" status indicating successful creation. * 2. Modify an Event: - Locate the event you want to modify and click the ellipsis (three dots) on the far right. - Select Edit to open the edit modal. - Raw Event Name: The original event name (e.g., payment_added_success). Event Aliases: Alternative names for the event (e.g., payment_success). Description: A brief explanation (e.g., "Tracks successful payment additions"). - Update the fields as needed and click Save. - Note: An "Active" status confirms the event is successfully integrated; use "Archive" to deactivate events no longer needed. 3.0 Start Using Events in Crowd Once the Events API code is implemented and events are modified as needed, events will appear in Crowd’s tools. You can now: - Use events to build funnels (e.g., "Sign up to Payment Added"). - Filter user data by events (e.g., users who triggered payment_added_failed). - Create cohorts based on event activity (e.g., users with multiple successful payments). 4.0 Best Practices - Align Events with Goals: Ensure each event supports a specific goal (e.g., track errors to improve UX). - Use Descriptive Names: Name events clearly in snake_case (e.g., payment_added_success). - Avoid Overloading Events: Track meaningful actions, not every interaction. - Test Before Scaling: Verify events appear in Crowd before using them in funnels or cohorts. 4. Next Steps With events set up, explore building funnels or creating cohorts. Check out the Creating Funnels on Crowd guide to get started. For assistance, contact support via the in-app chat or email support@crowdapp.io

Last updated on May 27, 2025

Card sorting tests

Key Points; - What is Card sorting - Why Card sorting matters - Planning your Card sorting project - Conducting card sorting sessions - Interpreting and implementing card sorting results - Best practices for card sorting What is Card Sorting? Card sorting is a user-centered design method used to understand how users categorize and group information. Participants are asked to organize content items (usually represented on physical or digital cards) into meaningful categories, helping to inform the structure and organization of a website or application. Why Card Sorting Matters Card sorting is essential for: - Improving information architecture and navigation. - Enhancing the user experience and findability of content. - Ensuring that the structure aligns with user mental models. Crowd has 1 type of card sorting: - Closed Card Sorting: Participants sort cards into predefined categories. Planning Your Card Sorting Project - Defining Objectives and Scope Determine the specific objectives of your card-sorting project. What aspect of your website or product's structure do you want to improve? Clearly define the scope of your card sorting study. - Identifying Your Target Audience Identify the target audience or user group for whom you are optimizing the information structure. Ensure that participants represent this group accurately. - Preparing the Materials Create the cards or digital representations of content items that participants will sort. Ensure these items are clear and accurately represent your website's content. Conducting Card Sorting Sessions - Selecting Participants Recruit participants who are representative of your target audience. Aim for a diverse group to ensure a wide range of perspectives. - Gathering and Analyzing Results Administer the card sorting sessions, and collect participants' feedback and sorting data. Analyze the data to identify trends, clusters, and patterns. Interpreting and Implementing Card Sorting Results - Analyzing the Data Analyze the results to identify trends and common groupings. Understand how participants perceive the organization of your content. - Revising Your Information Architecture Based on the findings, revise the information architecture of your website or product to align with user preferences and expectations. - Testing the Revised Structure Implement the changes to your website or product, and conduct usability testing to validate the revised information structure. Best Practices for Card Sorting - Clear Communication Communicate the purpose of the card sorting study to participants, and provide them with instructions on how to perform the task. - Iterative Approach Card sorting is often most effective when conducted iteratively. Continue to refine your information structure based on ongoing feedback. - Collaboration Involve stakeholders and team members in the card-sorting process to ensure that design decisions are well-informed and aligned with the project's objectives. - Ethical Considerations Respect ethical guidelines during card sorting, including obtaining informed consent and ensuring that participant data is handled securely and privately. By following these guidelines and best practices from Crowd, you can conduct card sorting studies that provide valuable insights and result in a more user-centered and navigable information architecture.

Last updated on May 27, 2025