---
title: MainWP Pro Reports - Snippet
date: 2025-06-08T15:36:20Z
modified: 2025-06-08T15:36:21Z
permalink: "https://techarticles.co.uk/mainwp-pro-reports-snippet/"
type: post
status: publish
excerpt: ""
wpid: 5331
categories:
  - Coding
  - MainWP
  - Plugins
  - Wordpress
timestamp: 2025-06-08T15:36:21Z
tags:
  - Coding
  - MainWP
  - Plugins
  - Wordpress
---

I use Independent Analytics for WordPress analytics, and I have always wanted to add my stats to my professional reports. That’s why I created the [MainWP-IAWP addon](https://github.com/stingray82/MainWP-IAWP/tree/main).

In the last few months, Independent Analytics has created a plugin for MainWP that doesn’t require a child plugin, and this includes some pro-report tokens. In the latest [version 1.3](https://wordpress.org/plugins/independent-analytics-for-mainwp/), they have finally added pro-report tokens.

With this, I decided to retire the above plugin from active development. Although the current version of the plugin doesn’t offer all the features of my previous version, it’s now sufficient to eliminate the need for a plugin to perform this task.

Specifically, I still wanted to be able to use my tokens in my HTML email report, so I decided to write a snippet that utilises the data available with the new plugin while maintaining backwards compatibility.

The below snippet does exactly that, it opens the `[iawp.views]` `[iawp.visitors]` `[iawp.sessions]` and my legacy tokens and the correct spelling `[iwpa-views]` `[iwpa-visitors]` `[iwpa-sessions]` & `[ipwa-views]` `[ipwa-visitors]` `[ipwa-sessions]` Using the same data as the IA’s new plugin, but allowing backwards compatibility.

<?php add\_filter( ‘mainwp\_pro\_reports\_custom\_tokens’, ‘bridge\_expose\_all\_iawp\_tokens’, 10, 4 ); function bridge\_expose\_all\_iawp\_tokens( $tokensValues, $report, $site, $templ\_email ) { // Fetch the JSON analytics $raw = apply\_filters( ‘mainwp\_getwebsiteoptions’, false, intval( $site\[‘id’\] ), ‘iawp\_analytics’ ); // Default placeholder $defaults = \[ ‘views’ => ‘n/a’, ‘visitors’ => ‘n/a’, ‘sessions’ => ‘n/a’, \]; // If no data, set all to default and bail if ( empty( $raw ) ) { foreach ( $defaults as $key => $value ) { // new format $tokensValues\[ “\[iawp.{$key}\]” \] = $value; // legacy $tokensValues\[ “\[ipwa-{$key}\]” \] = $value; // typo fallback $tokensValues\[ “\[iwpa-{$key}\]” \] = $value; } return $tokensValues; } // Decode JSON $analytics = json\_decode( $raw, true ); if ( ! is\_array( $analytics ) ) { foreach ( $defaults as $key => $\_ ) { $tokensValues\[ “\[iawp.{$key}\]” \] = ‘error’; $tokensValues\[ “\[ipwa-{$key}\]” \] = ‘error’; $tokensValues\[ “\[iwpa-{$key}\]” \] = ‘error’; } return $tokensValues; } // Map each metric into all three token styles foreach ( \[ ‘views’, ‘visitors’, ‘sessions’ \] as $key ) { $val = isset( $analytics\[ $key \] ) ? intval( $analytics\[ $key \] ) : 0; $tokensValues\[ “\[iawp.{$key}\]” \] = $val; $tokensValues\[ “\[ipwa-{$key}\]” \] = $val; $tokensValues\[ “\[iwpa-{$key}\]” \] = $val; } return $tokensValues; } ```
<span class="line"><span style="color: #F97583"><?</span><span style="color: #79B8FF">php</span></span>
<span class="line"><span style="color: #B392F0">add_filter</span><span style="color: #E1E4E8">( </span><span style="color: #9ECBFF">'mainwp_pro_reports_custom_tokens'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">'bridge_expose_all_iawp_tokens'</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">10</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">4</span><span style="color: #E1E4E8"> );</span></span>
<span class="line"><span style="color: #F97583">function</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">bridge_expose_all_iawp_tokens</span><span style="color: #E1E4E8">( $tokensValues, $report, $site, $templ_email ) {</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Fetch the JSON analytics</span></span>
<span class="line"><span style="color: #E1E4E8">    $raw </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">apply_filters</span><span style="color: #E1E4E8">( </span><span style="color: #9ECBFF">'mainwp_getwebsiteoptions'</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">false</span><span style="color: #E1E4E8">, </span><span style="color: #79B8FF">intval</span><span style="color: #E1E4E8">( $site[</span><span style="color: #9ECBFF">'id'</span><span style="color: #E1E4E8">] ), </span><span style="color: #9ECBFF">'iawp_analytics'</span><span style="color: #E1E4E8"> );</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Default placeholder</span></span>
<span class="line"><span style="color: #E1E4E8">    $defaults </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> [</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'views'</span><span style="color: #E1E4E8">    </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'n/a'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'visitors'</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'n/a'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #9ECBFF">'sessions'</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'n/a'</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">    ];</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// If no data, set all to default and bail</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> ( </span><span style="color: #79B8FF">empty</span><span style="color: #E1E4E8">( $raw ) ) {</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ( $defaults </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $key </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> $value ) {</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #6A737D">// new format</span></span>
<span class="line"><span style="color: #E1E4E8">            $tokensValues[ </span><span style="color: #9ECBFF">"[iawp.{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ]   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $value;</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #6A737D">// legacy</span></span>
<span class="line"><span style="color: #E1E4E8">            $tokensValues[ </span><span style="color: #9ECBFF">"[ipwa-{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ]   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $value;</span></span>
<span class="line"><span style="color: #E1E4E8">            </span><span style="color: #6A737D">// typo fallback</span></span>
<span class="line"><span style="color: #E1E4E8">            $tokensValues[ </span><span style="color: #9ECBFF">"[iwpa-{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ]   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $value;</span></span>
<span class="line"><span style="color: #E1E4E8">        }</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> $tokensValues;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Decode JSON</span></span>
<span class="line"><span style="color: #E1E4E8">    $analytics </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">json_decode</span><span style="color: #E1E4E8">( $raw, </span><span style="color: #79B8FF">true</span><span style="color: #E1E4E8"> );</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> ( </span><span style="color: #F97583">!</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">is_array</span><span style="color: #E1E4E8">( $analytics ) ) {</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ( $defaults </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $key </span><span style="color: #F97583">=></span><span style="color: #E1E4E8"> $_ ) {</span></span>
<span class="line"><span style="color: #E1E4E8">            $tokensValues[ </span><span style="color: #9ECBFF">"[iawp.{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ]   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'error'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">            $tokensValues[ </span><span style="color: #9ECBFF">"[ipwa-{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ]   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'error'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">            $tokensValues[ </span><span style="color: #9ECBFF">"[iwpa-{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ]   </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">'error'</span><span style="color: #E1E4E8">;</span></span>
<span class="line"><span style="color: #E1E4E8">        }</span></span>
<span class="line"><span style="color: #E1E4E8">        </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> $tokensValues;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #6A737D">// Map each metric into all three token styles</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">foreach</span><span style="color: #E1E4E8"> ( [ </span><span style="color: #9ECBFF">'views'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">'visitors'</span><span style="color: #E1E4E8">, </span><span style="color: #9ECBFF">'sessions'</span><span style="color: #E1E4E8"> ] </span><span style="color: #F97583">as</span><span style="color: #E1E4E8"> $key ) {</span></span>
<span class="line"><span style="color: #E1E4E8">        $val </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">isset</span><span style="color: #E1E4E8">( $analytics[ $key ] ) </span><span style="color: #F97583">?</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">intval</span><span style="color: #E1E4E8">( $analytics[ $key ] ) </span><span style="color: #F97583">:</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">0</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">        $tokensValues[ </span><span style="color: #9ECBFF">"[iawp.{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ] </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $val;</span></span>
<span class="line"><span style="color: #E1E4E8">        $tokensValues[ </span><span style="color: #9ECBFF">"[ipwa-{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ] </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $val;</span></span>
<span class="line"><span style="color: #E1E4E8">        $tokensValues[ </span><span style="color: #9ECBFF">"[iwpa-{</span><span style="color: #E1E4E8">$key</span><span style="color: #9ECBFF">}]"</span><span style="color: #E1E4E8"> ] </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> $val;</span></span>
<span class="line"><span style="color: #E1E4E8">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">return</span><span style="color: #E1E4E8"> $tokensValues;</span></span>
<span class="line"><span style="color: #E1E4E8">}</span></span>
<span class="line"></span>
```PHP

I am posting it here so it’s available to others until such time as full support is added to the IAWP plugin to get these working. You just need this plugin on your MainWP dashboard site, and the IAWP plugin and your legacy tokens, using the above plugins, will work. Additionally, creating them outside of the builder will also be possible.