> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Automate Ad Reporting to Google Slides

> Learn how to automate each element of your ad reports - tables, charts, text, and scorecards - using Google Ads data as an example.

Every marketing report contains the same basic elements: **data tables**, **charts**, **text summaries**, and **scorecards**. Instead of copying and pasting these manually every week, you can automate each element.

This guide shows you how to automate each report element step-by-step. We'll use Google Ads as an example, but the same approach works for any data source (Meta Ads, LinkedIn Ads, Google Analytics, etc.).

**What you'll learn to automate:**

* **Data Tables** - Campaign performance tables
* **Scorecards** - Key metrics and KPIs
* **Charts** - Visual trends and comparisons
* **Text Updates** - AI-generated insights and summaries

***

## Video Tutorial

Watch this step-by-step video guide to see the automation in action:

<iframe width="560" height="315" src="https://www.youtube.com/embed/JyGwf3fxiMI" title="Automate Ad Reporting to Google Slides" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />

***

## Report Elements Overview

Most marketing reports contain these elements:

| Element          | What It Shows        | Example                                         |
| ---------------- | -------------------- | ----------------------------------------------- |
| **Data Table**   | Raw performance data | Campaign names, clicks, cost, conversions       |
| **Chart**        | Visual trends        | Monthly spend trend, campaign comparison        |
| **Text Summary** | Written insights     | "Brand campaigns had 25% higher CTR this month" |
| **Scorecard**    | Key metrics          | Total spend: \$12,500, Total conversions: 145   |

Instead of building one complex workflow, we'll automate each element separately. This makes it easier to build, test, and troubleshoot.

## Creating Data Tables

Most marketing reports start with a data table showing campaign performance, website metrics, or ad results. Instead of manually copying and pasting this data every week, let's automate it.

### The Manual Process (What We're Replacing)

Normally, to create a data table in Google Slides, you would:

1. Create a table in Google Slides
2. Style it with colors, fonts, and formatting
3. Go to Google Ads (or your data source)
4. Export or copy the performance data
5. Paste it into your table
6. Repeat this every week/month

**This is exactly what we're going to automate.**

### Overview of Steps

Here's what we'll build:

1. **Create a styled table** in Google Slides (one-time setup)
2. **Add "alt text"** to identify the table (one-time setup)
3. **Build a workflow** that pulls fresh data and updates the table
4. **Schedule it** to run automatically

### What's Alt Text?

**Alt text** is normally used for accessibility (describing images to screen readers), but we use it as a **unique identifier** to tell Markifact which table to update.

You'll hear about alt text a lot in this guide - **it's the cornerstone of all our updates**. Every element we want to automate (tables, charts, text) needs alt text so Markifact knows what to update.

### Step 1: Create Your Table in Google Slides

1. **Open Google Slides** and create a new presentation
2. **Insert → Table** → Choose any size (it will auto-adjust)
3. **Style your table:** Add colors, fonts, borders - whatever you like
4. **Right-click the table** → **Alt text** → Set to `campaign_table`

**That's it!** Don't worry about headers or exact size - Markifact handles all that automatically.

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_alt_text_table.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=988cde65e0ed88bb7252f7fd912b8331" alt="Google Slides table" width="2896" height="1260" data-path="images/guides/automate-ad-reporting/gslides_alt_text_table.png" />

### Step 2: Build the Workflow in Markifact

Now let's create the automation that will update your table.

#### Create the Workflow

1. Go to **Workflows** in Markifact
2. **Click "+ New Workflow"**
3. **Name it:** `Update Campaign Table`

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/new_workflow.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=99c0dc1874357a7085a7e387f29a3742" alt="empty-workflow" width="3000" height="1462" data-path="images/guides/automate-ad-reporting/new_workflow.png" />

#### Add a Scheduler

If you want this to run automatically:

1. **Add Node** → **Scheduler**
2. **Set it up:**
   * **Frequency:** Weekly
   * **Day:** Monday
   * **Time:** 9:00 AM

*This will update your table every Monday morning with fresh data.*

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/weekly_scheduler.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=6447a6308912d0875d81b04452155cc3" alt="scheduler-trigger" width="2980" height="1458" data-path="images/guides/automate-ad-reporting/weekly_scheduler.png" />

#### Add Google Ads Data

1. **Add Node** → **Google Ads** → **Get Report**
2. **Connect it** to your Scheduler (or skip scheduler for manual runs)
3. **Configure your data:**
   * **Accounts:** Select your Google Ads account
   * **Date Range:** Last week (or your preferred period)
   * **Metrics:** Choose what you want to see:
     * Cost
     * Impressions
     * Clicks
     * Conversions
   * **Dimensions:** Campaign name
   * **Options:**
     * **Pretty Column Names** (makes headers readable)
     * **Display Currency Symbol** (shows \$ for cost)
     * **Compact Numbers** (shows 10K instead of 10,000)

This pulls clean, formatted data that's ready for your table.

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gads_get_report.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=faeef8b4b5b3302f0ff22300acbbac0c" alt="Google Ads node" width="2814" height="1432" data-path="images/guides/automate-ad-reporting/gads_get_report.png" />

#### Update Your Google Slides Table

1. **Add Node** → **Google Slides** → **Update Table**
2. **Connect it** to your Google Ads node
3. **Configure:**
   * **Presentation URL:** Copy/paste your Google Slides URL
   * **Table Alt Text:** `campaign_table` (must match what you set earlier)
   * **Table Data:** Connect the output from your Google Ads node

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_update_table.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=a70aecb91467b278ad18fabf90685aca" alt="Google Slides node" width="2854" height="1314" data-path="images/guides/automate-ad-reporting/gslides_update_table.png" />

### Step 3: Test It

1. **Click "Run"** button in the top right of Markifact
2. **Go to your Google Slides** and check your table
3. **Your table now shows fresh Google Ads data** with proper headers and formatting

**That's it!** Your table updates automatically.

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_updated_table.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=1b5a8bb4e400d9288196d27cb51e6402" alt="Google Slides updated table" width="2964" height="1442" data-path="images/guides/automate-ad-reporting/gslides_updated_table.png" />

### What Just Happened?

* **Markifact found your table** using the alt text `campaign_table`
* **Pulled fresh Google Ads data** and automatically created headers (Campaign Name, Cost, Clicks, etc.)
* **Sized the table** to fit your data perfectly
* **Preserved your styling** (colors, fonts, borders)
* **Formatted the data** with currency symbols and readable numbers

***

## Creating Scorecards

Key metrics displayed prominently - total spend, conversions, etc. This is much simpler than tables because we can use the metric names directly.

### The Manual Process (What We're Replacing)

Normally, to create scorecards in your reports, you would:

1. Go to Google Ads and look up total spend, total clicks, etc.
2. Copy these numbers manually
3. Format them properly (\$12,450, 2.4%, etc.)
4. Type these numbers into text boxes in your slides
5. Repeat this every reporting period

**This is exactly what we're going to automate**

### Step 1: Prepare Your Slide

1. **Create text boxes** for each metric in your Google Slides presentation
2. **Set alt text** for each text box to match the Google Ads metric names:
   * Total cost box: `cost`
   * Total clicks box: `clicks`
   * Total impressions box: `impressions`
   * Total conversions box: `conversions`

**Key insight:** The alt text matches what Google Ads calls these metrics for easier identification.

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_text_box_alt.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=beac01fd625f064347de7cfd5e3bbaa4" alt="Google Slides scorecard example" width="2990" height="1452" data-path="images/guides/automate-ad-reporting/gslides_text_box_alt.png" />

### Step 2: Get Totals from Google Ads

1. **Add Node** → **Google Ads** → **Get Report**
2. **Configure for totals:**
   * **Accounts:** Select your Google Ads account
   * **Date Range:** Last week (or your preferred period)
   * **Metrics:** Choose the metrics you want as scorecards:
     * Cost
     * Clicks
     * Impressions
     * Conversions
   * **Dimensions:** Leave empty (this gives you totals, not per-campaign)
   * **Options:**
     * **Display Currency Symbol** (shows \$ for cost)
     * **Compact Numbers** (shows 10K instead of 10,000)

**Important:** No dimensions = total numbers across all campaigns!

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gads_get_total.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=cb8e4b5f5c7d580001a717d67930d30b" alt="Google Ads node for totals" width="2820" height="1438" data-path="images/guides/automate-ad-reporting/gads_get_total.png" />

### Step 3: Update Your Scorecard Text Boxes

**Add one Replace Text node for all metrics:**

1. **Add Node** → **Google Slides** → **Replace Text**
2. **Connect it** to your Google Ads totals node
3. **Configure:**
   * **Presentation URL:** Your slides URL
   * **Search Method:** Find by alt text
   * **Replacement Method:** Manual text replacement
   * **Text Replacements:** Add each metric:
     * `cost` → Connect Cost from Google Ads output
     * `clicks` → Connect Clicks from Google Ads output
     * `impressions` → Connect Impressions from Google Ads output
     * `conversions` → Connect Conversions from Google Ads output

**One node updates all your scorecards at once!**

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_replace_text.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=fffb57b6f023d0572d5b8d8caf2bb711" alt="Google Slides node for scorecards" width="2838" height="1448" data-path="images/guides/automate-ad-reporting/gslides_replace_text.png" />

### Step 4: Test Your Scorecards

1. **Run the workflow**
2. **Check your Google Slides** - each text box should show the total for that metric
3. **Your scorecards now update automatically with properly formatted numbers!**

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_updated_scorecards.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=8a0e80cfbe8d51d2116193c79de32104" alt="Google Slides updated scorecards" width="2964" height="1458" data-path="images/guides/automate-ad-reporting/gslides_updated_scorecards.png" />

### What Just Happened?

* **Google Ads calculated totals** automatically (no dimensions = totals)
* **Alt text matched metric names** - `cost` finds cost, `clicks` finds clicks
* **Numbers are pre-formatted** with currency symbols and readable formatting

***

## Creating Charts

Visual charts make data easier to understand. Here's how to automate them.

### The Manual Process (What We're Replacing)

Normally, to add charts to your Google Slides reports, you would:

1. Export data from Google Ads to a spreadsheet
2. Create a chart in Google Sheets manually
3. Copy the chart and paste it into Google Slides
4. Every time you need fresh data, repeat steps 1-3
5. Or manually click "refresh" buttons on existing charts

**This is exactly what we're going to automate.**

### The Solution: Refresh Existing Charts

**The key insight:** When you paste a Google Sheets chart into Google Slides, the chart data doesn't automatically update. You have to manually open the slides and click the "refresh" button every time the underlying data changes. This approach automates that clicking for you!

### Step 1: Get Your Data in Google Sheets First

**You need data before you can create a chart!**

1. **Add Node** → **Google Sheets** → **Write Data**

2. **Connect it** to your Google Ads node (from your table workflow)

3. **Configure:**

   * **Spreadsheet URL/ID:** Create a new Google Sheets or use existing
   * **Working Sheet:** "Chart Data" (or any sheet name)
   * **Write Mode:** Overwrite (to replace old data)
   * **Starting Row:** 1 (includes headers)
   * **Data:** Connect Google Ads output

4. **Run the workflow once** to populate your Google Sheets with data

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gsheet_write_data.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=4db03f074bb1a05e46bb060ffadce8d2" alt="Google Sheets Write Data node" width="2984" height="1460" data-path="images/guides/automate-ad-reporting/gsheet_write_data.png" />

### Step 2: Create Your Chart (One-Time Setup)

Now that you have data in Google Sheets:

1. **Open your Google Sheets** (the one from Step 1)
2. **You'll see your Google Ads data** with proper headers and formatting
3. **Select all the data** (including headers)
4. **Insert → Chart**
5. **Choose your preferred chart type**
6. **Customize the styling** - colors, titles, labels, etc.

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gsheet_chart.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=b451ee96b841a152f1e7886ea33ea992" alt="Google Sheets chart example" width="1316" height="577" data-path="images/guides/automate-ad-reporting/gsheet_chart.png" />

### Step 3: Copy Chart to Google Slides

1. **Copy the chart** from Google Sheets (right-click → Copy)
2. **Go to your Google Slides presentation**
3. **Paste the chart** where you want it
4. **Choose "Link to spreadsheet"** when prompted (this is important!)

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_chart.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=5145c7731eab8aa0e9d1947c0c6104ad" alt="Google Slides chart paste" width="2946" height="1458" data-path="images/guides/automate-ad-reporting/gslides_chart.png" />

### Step 4: Build the Automation

Now we'll automate the data updates and chart refreshing:

**The data update is already done** (from Step 1), so we just need to add the chart refresh:

1. **Add Node** → **Google Slides** → **Refresh Sheets Chart**
2. **Connect it** to your Write Data node
3. **Configure:**
   * **Presentation URL/ID:** Your Google Slides URL
   * **Refresh Type:** Refresh all charts
   * **Slide Number:** Leave empty (refreshes all slides)

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_refresh_chart.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=68a9cf609f8037a2272a0cf023e4138e" alt="Google Slides Refresh Chart node" width="2998" height="1460" data-path="images/guides/automate-ad-reporting/gslides_refresh_chart.png" />

### Step 5: Test the Chart Automation

1. **Run the workflow**
2. **Check your Google Sheets** - data should be updated
3. **Check your Google Slides** - chart should show fresh data with no refresh button

**Perfect! Your charts now update automatically with fresh data.**

Note: if you want to refersh a specific chart, you can give the chart an ALT text like `spend_chart` and use that in the Refresh Sheets Chart node.

<Accordion title="Advanced: Dynamic Chart Creation for Templates">
  There's also an advanced approach using **Get Chart** and **Add Sheets Chart** nodes that's primarily used in Markifact templates to create charts programmatically. This approach is more complex and mainly used when building reusable templates from scratch. For most users, the refresh approach above is simpler and more practical.

  Visit [Get Chart Node](/nodes/sheets/gslides_refresh_chart) and [Add Sheets Chart Node](/nodes/slides/slides_add_sheets_chart) for more details.
</Accordion>

***

## Creating Text & Insights

Replace static text with AI-generated insights that update automatically.

### The Manual Process (What We're Replacing)

Normally, to add insights to your reports, you would:

1. Look at your Google Ads data manually
2. Identify trends and patterns yourself
3. Write summary text and insights
4. Type or paste this text into your slides
5. Repeat this analysis every reporting period

**This is exactly what we're going to automate with AI.**

### Step 1: Prepare Your Slide

1. **Insert → Text box**
2. **Add placeholder text** like "Weekly insights will appear here"
3. **Right-click** → **Alt text** → Set to `weekly_insights`

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_ai_text.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=cdcef5b4dd37f329dd6404ebc35bc287" alt="Google Slides text box alt text" width="2954" height="1452" data-path="images/guides/automate-ad-reporting/gslides_ai_text.png" />

### Step 2: Add AI Analysis

**Add AI Node:**

1. **Add Node** → **AI** → **Analyze Data**
2. **Connect** to Google Ads node
3. **Configure:**

   * **Data:** Connect Google Ads output
   * **Model:** GPT-4o
   * **Prompt:**

   ```
   Analyze this Google Ads campaign data and write 3-4 key insights:

   1. Which campaigns performed best (by CTR and conversions)
   2. Any significant changes vs typical performance
   3. One specific recommendation for optimization

   Write in bullet points, keep each insight to one sentence.
   ```

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/ai_analyze.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=d780f33016c9d17504f98305233e7fad" alt="Google AI Analyze Data node" width="2844" height="1466" data-path="images/guides/automate-ad-reporting/ai_analyze.png" />

**Update Slides Text:**

1. **Add Node** → **Google Slides** → **Replace Text**
2. **Connect** to AI Analyze node
3. **Configure:**
   * **Presentation URL:** Your slides URL
   * **Alt Text:** `weekly_insights`
   * **New Text:** Connect AI output

<img src="https://mintcdn.com/markifact/Ljk8anYBzOzZ898C/images/guides/automate-ad-reporting/gslides_replace_ai_text.png?fit=max&auto=format&n=Ljk8anYBzOzZ898C&q=85&s=a76803a927151fb18062f5394b516482" alt="Google Slides Replace Text node" width="2828" height="1458" data-path="images/guides/automate-ad-reporting/gslides_replace_ai_text.png" />

### Step 3: Test AI Insights

1. **Run workflow**
2. **Check your slide** for AI-generated insights
3. **Adjust the prompt** if you want different insights

***

## Combining Elements

Once you've built individual elements, combine them into one master workflow:

```
Scheduler → Google Ads → [Split to multiple paths]
                       ├── Update Table
                       ├── Create Chart → Add Chart to Slides
                       ├── AI Insights → Update Text
                       └── AI Metrics → Update Scorecards
```

**Pro Tips:**

* **Test each element separately** before combining
* **Use consistent alt text naming** (e.g., `campaign_table`, `spend_chart`)
* **Start simple** - add one element at a time
* **Screenshots help** - document your alt text setup

***

## Troubleshooting

<Accordion title="Table not updating">
  Check these: - Alt text matches exactly (case-sensitive) - Table exists in the
  slide before running - Google Ads data is coming through (check node output) -
  Make sure you're using the correct presentation URL
</Accordion>

<Accordion title="Chart not appearing or not refreshing">
  Common issues: - Chart doesn't exist in Google Sheets yet - Wrong Chart Index
  (try 0, then 1, 2...) - Chart placeholder shape needs alt text - Make sure you
  chose "Link to spreadsheet" when pasting the chart - Check that the Google
  Sheets data updated first
</Accordion>

<Accordion title="AI text looks weird or incomplete">
  Improve by: - Being more specific in your prompt - Using Force Python for
  calculations - Testing prompt with sample data first - Check if the AI node is
  receiving data (look at node outputs) - Try a simpler prompt if results are
  inconsistent
</Accordion>

<Accordion title="Scorecards showing wrong numbers">
  Check these: - Alt text in slides matches metric names exactly (`cost`, not
  `Cost`) - Google Ads node has no dimensions selected (for totals) - Currency
  and number formatting options are enabled - The Replace Text node is connected
  to the right Google Ads output
</Accordion>

<Accordion title="Workflow runs but slides don't update">
  Common causes: - Wrong presentation URL (make sure it's shareable) - Alt text
  doesn't match between slides and workflow - Elements don't exist in slides yet

  * Google authentication expired - reconnect your accounts
</Accordion>

<Accordion title="Google Ads data is empty or missing">
  Check: - Google Ads account has data for the selected date range - Account
  permissions are correct - Try a broader date range (last 30 days instead of
  last week) - Verify the account selection in the Google Ads node
</Accordion>

<Accordion title="Charts show old data even after running">
  This usually means: - The chart refresh didn't work - check if refresh button
  still appears - Google Sheets data didn't update - check the Write Data node
  output - Chart is not properly linked to the spreadsheet - Try refreshing the
  chart manually once to test the connection
</Accordion>

<Accordion title="Can I use this with other ad platforms?">
  Yes! Replace the Google Ads node with: - **Meta Ads Get Report** for
  Facebook/Instagram ads - **LinkedIn Ads Get Report** for LinkedIn campaigns -
  **Microsoft Ads Get Report** for Bing ads - **Google Analytics Get Report**
  for website data All other steps remain the same.
</Accordion>

<Accordion title="How do I schedule this to run automatically?">
  Add a **Scheduler** node at the beginning: - Connect it to your first data
  node (Google Ads, etc.) - Set frequency (daily, weekly, monthly) - Choose
  day/time that works for your reporting schedule - Make sure your workflow is
  set to "Active"
</Accordion>

<Accordion title="Can I update multiple presentations with one workflow?">
  Yes, but you'll need separate Google Slides nodes for each presentation: - Use
  the same data nodes (Google Ads, AI, etc.) - Add multiple Update Table/Replace
  Text nodes - Configure each with different presentation URLs - All will update
  when the workflow runs
</Accordion>

***

## What's Next?

Now you know how to automate the core elements of any marketing report:

**Apply to Other Channels:**

* Use **Meta Ads Get Report** instead of Google Ads
* Use **Google Analytics Get Report** for website data
* Use **LinkedIn Ads Get Report** for B2B campaigns

**Advanced Elements:**

* **Comparison tables** (this month vs last month)
* **Conditional formatting** based on performance
* **Image automation** with AI-generated visuals

The key is starting with one element, getting it working, then adding more. Each element follows the same pattern: data → processing → update slide.
