# Pulse: Magento 2 real-time admin dashboard

> Replace Magento's static dashboard with a live, admin-only command center for revenue, orders, alerts, and campaign ROI.

---

## Overview

Pulse is a Magento 2 real-time admin dashboard. Instead of waiting for end-of-day reports, you see revenue, orders, refunds, and health status update continuously - alongside an interactive revenue chart, automatic anomaly alerts, and attribution-driven campaign performance.

![Pulse dashboard overview](images/overview.png)

This module helps you:

- See what's happening in your store right now without running a report
- Catch revenue drops, order slowdowns, and refund spikes before customers start complaining
- Compare any period against the last one - or the same period a year ago - at a glance
- Understand which campaigns and traffic sources actually produce revenue
- Mark campaigns, promotions, deployments, and incidents on the revenue timeline so you can see their impact

---

## When to use this

Use Pulse when you want to:

- Open the admin and know instantly whether today is on track
- Investigate a suspicious drop in sales or surge in refunds, and drill straight into the affected orders
- Plan staffing, promotions, and inventory around the hours and days your customers actually buy
- Evaluate campaign and ad spend performance against real Magento revenue, not estimated conversions
- Record operational events (deploys, promotions, outages, price changes) next to your revenue line so the cause of every wiggle is visible later

---

## Key capabilities

- Interactive revenue chart - zoom, pan, overlay metrics, click a point to drill into the orders behind it
- Live ticker - revenue, orders, last-order age, and a health indicator that refreshes every 30–60 seconds
- KPI hero tiles - revenue, orders, units, AOV, refunds, discounts, and profit with period-over-period deltas
- Orders-by-hour heatmap - see your peak buying windows and quiet gaps at a glance
- Recent order stream - last 20 orders with VIP and frequent-refund badges
- Alert center - deterministic detectors for revenue drops, order slowdowns, refund spikes, zero-revenue windows, fulfilment aging, spam, cart abandonment, and more
- Annotations and events - pin campaigns, promotions, deploys, incidents, and holidays to the chart
- Campaign analytics - revenue, health score, and period-over-period change per campaign (requires ProfitEasy Growth+)
- Ad spend and ROI - connect Google Ads for daily spend sync and optional AI budget recommendations
- Category intelligence - 2x2 tile grid with momentum, opportunity mix, and rule-based restock suggestions
- Ecosystem widgets - live cards for ProfitEasy, HelloCustomer, NotifyMe, SmartCart, SmartCategories, TrackEasy, and fulfilment modules
- Dashboard theming - Day, Night, or System-matched theme stored per admin user

---

## Installation

Pulse installs via Composer, then activates with a license key from your Moogento.com account. The whole flow takes about 5 minutes.

### Step 1: Get your Composer keys from Moogento.com

1. Sign in at **https://www.moogento.com** and open **My Plugins** in your account menu.
2. Find **Pulse** in the list of plugins you own.
3. Generate (or reveal) the Composer access keys for that plugin - a **public key** and a **private key**.
4. **Add your install domain to the key.** Each Composer key is tied to a specific domain - if you're installing on `yourstore.com`, add `yourstore.com` to the key's allowed domains. The Composer download will be rejected on any other domain.

If you run staging and production on different domains, add both - separate keys per environment are fine too.

### Step 2: Install the module with Composer

From your Magento 2 root directory:

```
composer require moogento/module-pulse
```

When Composer asks for credentials, paste the **public key** as the username and the **private key** as the password. They'll be cached in `~/.composer/auth.json` for future runs.

### Step 3: Enable the module in Magento

```
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:clean
```

If you run `php bin/magento module:status Moogento_Pulse` you should see it listed as enabled.

### Step 4: Add your license key in the Moogento admin

1. Still on **https://www.moogento.com > My Plugins**, copy the **license key** for Pulse (separate from the Composer keys you used above).
2. In your Magento admin, go to **Stores > Configuration > Moogento > Licenses**.
3. Find the row for **Pulse** and paste the license key.
4. Click **Save Config**, then run `php bin/magento cache:clean` once.

The license validates within a few seconds. You should see the module's status flip to active. If it stays inactive, double-check the domain on the license matches where you've installed - domain mismatch is the most common cause.

---

## Setup overview

Most setup happens in:

Stores > Configuration > Moogento > Pulse

![Pulse configuration page](images/config-overview.png)

You'll mainly work with:

- General - master on/off and logging
- Setup: Dashboard - default scope, time range, refresh interval, widget visibility, VIP and refund badge tiers
- Setup: Charts - chart types and timescale
- Setup: Alerts - which detectors run and their thresholds
- Setup: Data & Retention - mixed-currency handling and how long rollup data is kept
- Setup: Events - automatic event detection (UTM campaigns, etc.)
- Campaign: Analytics - attribution-driven campaign dashboard
- Campaign: Search Console - organic search performance sync settings
- Campaign: Google Search Console - Google Search Console OAuth connection
- Campaign: Ad Spend - paid spend sync and ROI classification settings
- Campaign: Google Ads - Google Ads OAuth connection and customer account
- Campaign: AI Recommendations - optional AI-generated budget advice
- Setup: Category Intelligence - 2x2 tile grid and restock suggestion thresholds

---

## Common setups

### Turn Pulse on and make it your default dashboard

New installations come with Pulse disabled for the standalone dashboard so you can review settings first. Once you're happy, switch it on - users with the Pulse ACL permission will land on Pulse instead of Magento's default dashboard after login.

#### How to set it up

1. Go to:
   Stores > Configuration > Moogento > Pulse > General

2. Set:
   - Enable: Pulse = Yes
   - Enable: Standalone Dashboard = Yes
   - Enable: Debug Logging = No (turn on only while investigating an issue)

3. Save Config

![Pulse General config group showing enable, standalone dashboard, and debug logging toggles](images/config-general.png)

#### Notes

- When Pulse is disabled, the menu item is hidden and routes return a 403 - configuration is preserved so you can re-enable safely.
- Standalone Dashboard controls whether the default Magento dashboard redirects to Pulse. Turn it off if you want admins to see the standard dashboard and access Pulse via the Moogento menu.
- Debug logging writes to `var/log/moogento_pulse.log`. Keep it off on production unless you're reproducing a specific behavior.

---

### Choose the dashboard's default view and live refresh

The dashboard opens with a default scope (store/website/global), a default time range, and an auto-refresh cadence. Pick values that match how your team actually reviews the store.

#### How to set it up

1. Go to:
   Stores > Configuration > Moogento > Pulse > Setup: Dashboard

2. Set:
   - Default: Scope = Store (pick the scope most of your team works in)
   - Default: Time Range = Last 7 Days (or Today if you run a high-tempo store)
   - Refresh: Auto-Refresh Interval = 300 (seconds; lower for high-volume stores)
   - Show: Enabled Widgets = the ecosystem modules you actually run (ProfitEasy, HelloCustomer, NotifyMe, SmartCart, SmartCategories, TrackEasy, fulfilment, NoMoreSpam Pro)

3. Save Config

![Pulse Setup: Dashboard config group showing scope, time range, widgets, and VIP badges](images/config-dashboard.png)

#### Notes

- Only widgets listed here are queried. Unlisting a widget stops the back-end from fetching its data - a quick way to speed up the dashboard while you audit performance.
- Admins can override the default scope and range at runtime; this setting only controls the first load.
- Auto-refresh fires a lightweight ticker endpoint, not a full dashboard reload, so shorter intervals are cheap.

---

### Highlight VIP and frequent-refund customers in the recent orders stream

Badges in the Recent Orders panel let your team spot your best customers and flag buyers whose refund patterns need attention - without leaving the dashboard.

#### How to set it up

1. Go to:
   Stores > Configuration > Moogento > Pulse > Setup: Dashboard

2. Set:
   - Enable: VIP Badges = Yes (requires ProfitEasy lifetime-value tracking)
   - VIP: Gold Percentile = 1 (top 1% of customers)
   - VIP: Silver Percentile = 5 (must be higher than Gold)
   - VIP: Grey Percentile = 10 (must be higher than Silver)
   - Enable: Refund Badges = Yes

3. Save Config

#### Notes

- VIP badges only render when ProfitEasy lifetime-value data is available. Without it, the badges hide quietly instead of showing empty shields.
- The refund badge highlights customers with three or more refunds in the last year, or any refund in the last 30 days - use it as a cue to double-check the order, not an automatic block.
- Percentile thresholds must be ordered Gold < Silver < Grey. Setting Gold to 5 and Silver to 1 will produce no Gold badges.

---

### Tune the alert center to your store's volume

Pulse ships with sensible defaults, but what counts as a "revenue drop" for a $1M/month store is very different from a $50K/month store. Pick detectors you want to hear from and set thresholds that match your baseline.

#### How to set it up

1. Go to:
   Stores > Configuration > Moogento > Pulse > Setup: Alerts

2. Set:
   - Enable: Detectors = choose the detectors relevant to your setup (Revenue Drop, Order Slowdown, Refund Spike are the core three)
   - Threshold: Revenue Drop = 30 (percent below baseline)
   - Threshold: Order Slowdown = 50 (percent below hourly baseline)
   - Threshold: Refund Spike = 200 (percent above daily baseline)
   - Threshold: Zero Revenue Window = 3 (hours of 8am–10pm trading with zero orders)
   - Threshold: Fulfilment Aging = 48 (hours before flagging an unshipped order)
   - Threshold: NotifyMe Demand Surge = 100 (percent 24h vs 7-day average)

3. Save Config

![Pulse Setup: Alerts config group showing detector checklist and anomaly thresholds](images/config-alerts.png)

#### Notes

- Some detectors require other modules: VIP Order and Refund Spike lean on ProfitEasy; Spam Spike and NoMoreSpam Pro Blocked Order need NoMoreSpam Pro; Inventory Risk and Demand Surge need NotifyMe; Shipment Risk needs TrackEasy; Fulfilment Backlog needs PickPack or PicknScan.
- Detectors need a few days of order history to establish baselines. On fresh installs, expect some quiet days before alerts start firing sensibly.
- Each alert links straight to the affected orders through the Investigation Grid - no manual filtering needed.

---

### Turn on campaign analytics and connect Google Ads

When you want to go beyond "did we make money today" and see which campaigns drove it, enable Campaign Analytics and, optionally, plug in Google Ads for spend-side ROI.

#### How to set it up

1. Go to:
   Stores > Configuration > Moogento > Pulse > Campaign: Analytics

2. Set:
   - Enable: Campaign Analytics = Yes
   - Campaign: Grouping Mode = Source + Medium (a good default; use Source Only for a summary view, Full Campaign for per-UTM detail)
   - Campaign: Min Orders for Health Score = 10 (campaigns below this show a "needs more data" flag)
   - Enable: Device Breakdown Block = Yes
   - Enable: New Customer Campaigns Block = Yes
   - Campaign: Health Scoring Mode = Balanced
   - Campaign: Refund Warning Threshold = 15

3. Save Config

![Pulse Campaign: Analytics config group showing enable toggle, grouping mode, and health scoring](images/config-campaigns.png)

4. To connect Google Ads, open:
   Stores > Configuration > Moogento > Pulse > Campaign: Google Ads

5. Enter your GCP OAuth Client ID, Client Secret, and Developer Token, save, then click **Connect**. Pulse walks you through picking the Google Ads customer account on return.

#### Notes

- Campaign Analytics requires ProfitEasy Growth plan or higher with campaign tracking enabled - without it, the Analytics block stays hidden.
- Ad Spend tracking and the Google Ads connector require the Pro plan.
- OAuth client credentials live at Default Config scope only. Account selection (which Google Ads customer to sync) is scope-aware so you can pick different accounts per store view.
- First sync backfills the last N days (see Lookback Days under Campaign: Ad Spend). Subsequent syncs run daily by default.

---

## Features reference

### Interactive revenue chart

- What it does: A live chart of revenue over time with optional overlays for orders, units, AOV, refunds, and profit. Click a point to drill into the orders behind it; zoom drag to focus a window; hover for formatted tooltips in the store's currency and timezone.
- When to use it: Any time you want to explain a spike or dip without running a report. Pair with Events to annotate campaigns, deploys, and incidents directly on the timeline.
- Chart path: Stores > Configuration > Moogento > Pulse > Setup: Charts - use **Show: Chart Types** to choose which overlays appear, and **Setup: Chart Timescale** to override the automatic hourly/daily grouping.

![Pulse Setup: Charts config group showing chart type selector and timescale override](images/config-chart.png)

### Live ticker and health state

- What it does: A thin strip at the top of the dashboard showing today's revenue, today's orders, how long since the last order, and an adaptive health state (Normal / Slowing / Risk). The "no recent orders" threshold scales with your historical hourly order rate - busy stores get alerted after minutes, quiet stores after hours.
- When to use it: Always on. It's the fastest way to know something is up.

### KPI hero tiles

- What it does: Revenue, Orders, Units Sold, AOV, Refunds, Discounts, and (with ProfitEasy) Profit, each with a delta versus the previous period or the same period a year ago.
- When to use it: Every period review. The year-ago comparison is especially useful for seasonal stores.

### Orders-by-hour heatmap

- What it does: A grid of day-of-week by hour-of-day coloured by order volume, with summary tiles for peak window, busiest day, and quiet hours.
- When to use it: Plan staffing for support and fulfilment, time promotional emails, or schedule deployments in your quietest window.

### Recent order stream

- What it does: A live table of your 20 most recent orders from the last 24 hours with customer, value, payment method, and optional AOV / CLV / VIP / refund badges. Click any increment ID to open the order.
- When to use it: Spot-check new orders, catch payment-method anomalies, and prioritise VIP customer experience.

### Alert center

- What it does: A dedicated Suggestions & Alerts block with tabs for open suggestions and active alerts. Each alert has a severity (info / warning / critical), a status (new / acknowledged / resolved), and an Investigate action that jumps to filtered orders.
- When to use it: Quick-triage each morning, or whenever the ticker's health state changes. Acknowledge alerts to move them out of the new lane without losing history.
- Config path: `moogento_pulse/alerts/*`

### Annotations and event timeline

- What it does: Tag moments on your revenue chart - Campaign (teal), Promotion (amber), Deploy (blue), Note (grey), Incident (red), Holiday (purple). Manual entries take precedence; optional automatic UTM detection creates annotations for campaigns seen in recent orders.
- When to use it: Every time you ship a change, run a promotion, or experience an outage. Future-you reviewing a chart will want to know what that spike or dip was.
- Config path: `moogento_pulse/annotations/utm_detection_enable` (auto-detection; needs ProfitEasy)

### Campaign analytics dashboard

- What it does: A campaign leaderboard ranked by revenue, with health scoring (working / mixed / not working / needs data), period-over-period growth, top-five winners and losers, a source pie chart, and device and new-customer breakdowns.
- When to use it: Weekly or monthly marketing reviews. Pair with Ad Spend to see cost against revenue.
- Config path: `moogento_pulse/campaigns/*`

### Ad spend and ROI

- What it does: Daily sync of impressions, clicks, and cost from Google Ads. Campaigns are scored as winning, losing, break-even, or spending-with-no-orders. Pause, resume, and adjust budgets without leaving Pulse.
- When to use it: Any store that runs paid search. Budget review meetings move from hours to minutes.
- Config paths: `moogento_pulse/ad_spend/*`, `moogento_pulse/ad_spend_google/*`

![Pulse Campaign: Ad Spend config group showing enable, sync frequency, lookback, and ROI thresholds](images/config-ad-spend.png)

### Search Console integration

- What it does: Syncs organic search performance (queries and landing pages) from Google Search Console so the campaign view, event timeline, and suggestions can lean on real organic data.
- When to use it: Stores with meaningful organic traffic that want attribution evidence beyond UTM tags.
- Config paths: `moogento_pulse/search_console/*`, `moogento_pulse/search_console_google/*`

![Pulse Campaign: Search Console config group showing enable, sync frequency, and row limits](images/config-search-console.png)

### Category intelligence

- What it does: A 2x2 tile grid summarising category momentum, opportunity mix, full-price vs discounted share, and category share, plus a rule-based suggestion feed (restock, price, promotion). Tiles are hoverable, dismissible, and replaceable.
- When to use it: Merchandising reviews and restock planning. Pair with NotifyMe for demand-driven restock signals.
- Config path: `moogento_pulse/category_intelligence/*`

![Pulse Setup: Category Intelligence config group showing momentum and opportunity thresholds](images/config-category-intelligence.png)

### Ecosystem widgets

- What it does: Half-width cards that render when the relevant Moogento module is installed and listed under Show: Enabled Widgets. Providers include ProfitEasy (profit, AOV, CLV), HelloCustomer (converted sales), NotifyMe (waitlist demand and attributed revenue), SmartCart, SmartCategories, TrackEasy (shipment risk), and PickPack / PicknScan (fulfilment queue).
- When to use it: The more Moogento modules you run, the richer the dashboard gets - leave all installed providers enabled unless you're actively auditing performance.

---

## Advanced configuration

### Mixed-currency handling

#### What it does

When your Magento store accepts orders in multiple currencies, Pulse needs a rule to reduce them to a single revenue number. Three options are available: skip non-base orders, convert everything to base currency using Magento's exchange rates, or use each store's reporting currency.

#### Setup

1. Go to Stores > Configuration > Moogento > Pulse > Setup: Data & Retention
2. Set Strategy: Mixed Currency to `skip`, `base_currency`, or `reporting_currency` depending on what matches your reporting model

![Pulse Setup: Data & Retention config group showing mixed currency strategy and retention days](images/config-data.png)

#### Notes

- `base_currency` is the most common choice but depends on Magento's `directory_currency_rate` table being populated. Check exchange rates are current before relying on it.
- Changing the strategy doesn't retroactively rebuild rollups. Run `php bin/magento moogento:pulse:rollup:rebuild --window=168` after switching to reprocess the last week.

### Data retention

#### What it does

High-resolution rollups (15-minute and hourly) accumulate fast. Retention determines how long Pulse keeps detailed rollups before compacting. Daily and monthly rollups are kept indefinitely.

#### Setup

1. Go to Stores > Configuration > Moogento > Pulse > Setup: Data & Retention
2. Set Retention: Data Retention to the number of days you want fine-grained data kept (default 365)

#### Notes

- Lowering retention does not delete data immediately - the cleanup cron enforces the new window on its next run.
- 365 days is a good default. Longer is fine but grows table sizes noticeably.

### Automatic UTM event detection

#### What it does

Hourly, Pulse scans recent orders for new UTM campaign labels and creates Campaign annotations automatically - so new ad campaigns show up on your revenue chart without anyone having to remember.

#### Setup

1. Ensure ProfitEasy is installed and extracting UTM parameters from orders
2. Go to Stores > Configuration > Moogento > Pulse > Setup: Events
3. Set Enable: Automated Event Detection to Yes

![Pulse Setup: Events config group showing automated event detection toggle](images/config-annotations.png)

#### Notes

- Only UTM campaigns observed in recent orders are annotated. Empty-click campaigns are ignored until they produce revenue.
- Auto-created annotations are tagged `source = auto` and are distinguishable from manual entries in the annotation table and the event timeline. Manual edits always take precedence.

### AI budget recommendations

#### What it does

On top of rule-based ad spend classification (which runs automatically with no API key), Pulse can call Anthropic, OpenAI, Z.AI, or OpenRouter to produce reasoned, per-campaign budget suggestions. Recommendations refresh periodically based on Recommendation Expiry.

#### Setup

1. Go to Stores > Configuration > Moogento > Pulse > Campaign: AI Recommendations
2. Set Enable: AI Recommendations = Yes
3. Pick a provider and set the corresponding API key and model
4. Set AI: Recommendation Expiry (Days) - e.g. 7 for weekly refresh

![Pulse Campaign: AI Recommendations config group showing provider selector, model, API key, and expiry](images/config-ad-spend-ai.png)

#### Notes

- API calls are only made when the AI block requests a fresh recommendation. Costs scale with how often expiry triggers a regeneration.
- If AI recommendations fail (API down, quota hit, key invalid), the rule-based classification still runs and is displayed - the dashboard doesn't go blank.

### Dashboard section ACL

#### What it does

Dashboard sections - ticker, KPIs, chart, categories, suggestions, top products, top categories, detail cards, campaigns - can be restricted per admin role via Magento ACL resources. Denied sections are removed from the layout before it reaches the browser, so users can't un-hide them.

#### Setup

1. Go to System > Permissions > User Roles
2. Edit the role you want to restrict
3. Open Role Resources and uncheck the specific Pulse dashboard section resources under Moogento > Pulse > Dashboard Sections
4. Save the role - affected users see a simpler dashboard on next login

#### Notes

- The saved-layout feature respects these restrictions: users can't save a layout that unhides a denied section.
- Layout save requires `Moogento_Pulse::dashboard_layout_manage`. Users without it still see the dashboard but can't persist custom arrangements.

---

## Tips & best practices

- Keep an eye on the setup-status banner at the top of the Pulse config page - it scores how much of Pulse is wired up and nudges you toward under-used features.
- Turn logging on only when you need it. `var/log/moogento_pulse.log` grows quickly under debug mode and clutters log rotation.
- If you manage multiple stores, set scope-specific defaults on the store view scope rather than the website - it keeps each store's dashboard tuned without duplicate admin work.
- Annotate every deploy, every promotion, and every incident as they happen. The revenue chart stays useful for years if your team builds the habit.
- Build your first batch of alert thresholds from the last month of data: pick a threshold that would have fired once or twice, not every hour.
- If you run Search Console and Google Ads together, connect both - Pulse blends organic and paid signals into the attribution evidence panel, which is more honest than either alone.

---

## Troubleshooting

### Dashboard is empty or the menu item is missing

- Cause: Pulse is disabled in config, the user lacks the `Moogento_Pulse::dashboard_view` ACL resource, or the license is invalid.
- Fix: Confirm Enable: Pulse and Enable: Standalone Dashboard are both Yes under General, verify the admin user's role has `Moogento_Pulse::dashboard_view`, and check the banner on the config page confirms the license is valid.

### Chart and KPI tiles show zero

- Cause: Rollups haven't been built yet, or cron is not running.
- Fix: Run `php bin/magento moogento:pulse:rollup:backfill` once, then confirm the `moogento_pulse_update_rollups` cron job is running. Verify real orders exist within the selected date range and scope.

### Alerts never fire

- Cause: Detector is disabled, the threshold is too lenient, or baselines haven't built up yet.
- Fix: Open Setup: Alerts and confirm the detector appears in Enable: Detectors, lower the threshold temporarily, and run `php bin/magento moogento:pulse:alerts:detect --dry-run` to see what the detectors currently think about your data.

### Currency totals look wrong

- Cause: Mixed-currency strategy doesn't match your expectation, or `directory_currency_rate` is stale.
- Fix: Review Strategy: Mixed Currency, refresh exchange rates, then run `php bin/magento moogento:pulse:rollup:rebuild --window=168` to reprocess the last week.

### Ecosystem widget isn't showing

- Cause: The relevant Moogento module is not installed, not listed under Show: Enabled Widgets, or has no data in the active scope and period.
- Fix: Verify the module is installed and enabled, add its widget code to Show: Enabled Widgets, and confirm the current date range and scope contain data for that provider.

### Dashboard layout won't save

- Cause: User lacks `Moogento_Pulse::dashboard_layout_manage`, or they've hit the 10-named-layout limit.
- Fix: Grant the ACL resource or delete an older named layout, then retry. Check `var/log/moogento_pulse.log` for `[Layout\Save::execute]` entries if the save still fails.

### Auto-detected UTM annotations aren't appearing

- Cause: Feature disabled, ProfitEasy missing or not capturing UTM parameters, or no qualifying orders in the recent window.
- Fix: Confirm Enable: Automated Event Detection is Yes, verify ProfitEasy is populating UTM fields on new orders, and ensure the `pulse_detect_utm_campaigns` cron has run recently.

---

## FAQs

<!-- seo: FAQPage schema - the page converter should emit JSON-LD for this section -->

### How do I make Pulse my default dashboard when I log in to Magento admin?

Set Enable: Standalone Dashboard to Yes under Stores > Configuration > Moogento > Pulse > General and save. Any admin user with the `Moogento_Pulse::dashboard_view` ACL permission will land on Pulse automatically on their next login. Users without that permission continue to see the standard Magento dashboard.

### Why are my revenue chart and KPI tiles showing zero?

The chart relies on pre-aggregated rollup data built by a background cron job - if rollups haven't run yet, all tiles read zero. Run `php bin/magento moogento:pulse:rollup:backfill` once to seed historical data, then confirm the `moogento_pulse_update_rollups` cron is running and that real orders exist within the selected date range and scope.

### Does Pulse work with Hyvä, Luma, and Porto themes?

Yes. Pulse is an admin-only module and has no storefront components, so it has no theme dependency - it works identically regardless of which frontend theme your store uses.

### Which plan do I need to use Campaign Analytics and Google Ads?

Campaign Analytics requires ProfitEasy Growth plan or higher with campaign tracking enabled. Ad Spend tracking and the Google Ads connector require the Pulse Pro plan. Rule-based campaign classification (without AI or Google Ads sync) runs on any plan once Campaign Analytics is enabled.

### How do I connect Google Search Console to Pulse?

Go to Stores > Configuration > Moogento > Pulse > Campaign: Google Search Console, enter your GCP OAuth Client ID and Client Secret, save, then click Connect. See the Common setups section for a full walkthrough including setting up the GCP OAuth app.

### What happens when I disable Pulse?

When Enable: Pulse is set to No, Pulse stops collecting data, all dashboard routes return a 403, and the Moogento menu item disappears. Your configuration and historical rollup data are preserved - re-enabling restores everything without needing to rebuild data from scratch.

### How do I stop getting too many alerts?

Open Stores > Configuration > Moogento > Pulse > Setup: Alerts, uncheck detectors you don't need, and raise the relevant thresholds - for example, increasing Threshold: Revenue Drop from 20 to 40 means a 40% drop is required before an alert fires. Build thresholds from a month of real data: a good threshold fires once or twice, not every day.

### Can I restrict which parts of the Pulse dashboard each admin role can see?

Yes. Go to System > Permissions > User Roles, edit the role, and uncheck specific Pulse dashboard section resources under Moogento > Pulse > Dashboard Sections. Denied sections are removed server-side before the page renders, so users cannot un-hide them. See the Advanced configuration section for full details.

### Does Pulse integrate with other Moogento modules?

Pulse integrates with ProfitEasy (profit KPIs, VIP badges, CLV data, campaign attribution), HelloCustomer (converted sales card), NotifyMe (waitlist demand card), SmartCart, SmartCategories, TrackEasy (shipment risk alert), and PickPack / PicknScan (fulfilment backlog alert). The more Moogento modules you run, the richer the Pulse dashboard becomes.

### How long does Pulse keep detailed order rollup data?

By default, high-resolution rollups (15-minute and hourly) are kept for 365 days. You can adjust this under Stores > Configuration > Moogento > Pulse > Setup: Data & Retention. Daily and monthly rollups are kept indefinitely regardless of this setting.

---

## Related guides

- [SmartCart](../smartcart)
- **SmartCategories** - category performance analytics that feeds signals into the Pulse category intelligence tile
- **MinimalMessaging** - customer messaging module with Pulse ecosystem widget integration
- **PowerCategories** - advanced category merchandising that works alongside Pulse category intelligence

---

## Need help?

- moo@moogento.com
- Include:
  - Magento version
  - Module name (Pulse)
  - What you're trying to do
