🚨 Need Help: Google Slides + Zapier Webhook Not Populating Image & Player Info on Form Submit
Hi Zapier Community
I've been working on an automation project to help streamline college football recruiting profiles using Google Forms, Sheets, Slides, and Webhooks by Zapier — and I’m hitting a wall I can’t seem to break through.
What I'm Trying to Do:
A Google Form collects player info and an image (uploaded via File Upload).
Zapier:
Extracts the image ID via Formatter step
Builds a uc?export=view&id=FILE_ID image URL
Sends player info + image URL to a Google Apps Script via a Webhook step.
The Apps Script should:
Duplicate a Slide template into a shared folder
Replace placeholder tags like {{Player_Name}}
Insert the image where {{Player_Picture}} is placed
Save the new slide
What Is Working:
The Zap successfully sends data to the script (I get a "success" response).
The slide file is being created in the right shared folder.
Image is occasionally inserted — but still not consistently.
What’s Not Working:
Text placeholders like {{Player_Name}} do not get replaced.
The image sometimes doesn’t show or it inserts an old image.
No error in Zapier or Apps Script console — but the slide content is blank or unchanged.
Google Apps Script I'm Using (provided by Zapier support):
Confirmed the data payload looks correct in Zapier’s Webhook step.
Checked that placeholders match exactly ({{Player_Name}}, etc.)
Ensured the image is shared as “Anyone with the link can view”
Re-deployed the script and replaced the Web App URL
What I Need Help With:
Why aren’t the placeholders like {{Player_Name}} being replaced?
Why does the image still sometimes fail to update?
Is there something wrong with how e.postData.contents is parsed or how data is referenced in data.KEY?
I’d really appreciate any insight — I’ve spent a full week testing every combination I can think of and I’m truly stuck. Thank you in advance for helping
Page 1 / 1
Hi @El Profe Gancz
Why not use this Zap action: GSlides - Create Presentation from Template
Thanks so much for your suggestion! I actually started this project using the "Create Presentation from Template" action in the Google Slides Zap — and it worked really well for replacing all the text placeholders like {{Player_Name}}, {{GPA}}, etc.
The only challenge I ran into was adding an image (a player headshot) into the slide with each new form submission. From what I’ve found, the built-in Google Slides Zapier action doesn’t support dynamic image insertion into placeholders — unless that’s changed recently?
To work around that, I switched over to using Google Apps Script triggered via a Webhook step from Zapier, which gives me full control over inserting both text and images. But as you know, managing script deployments, permissions, and URL triggers can get pretty tricky — especially when troubleshooting why slides aren’t showing up or why image IDs aren’t loading as expected.
If there's a way to insert an image dynamically using only Zapier (without code) — even if it’s using another tool or workaround — I’d love to learn more about that!
Thanks again for jumping in and sharing your expertise!
@El Profe Gancz
For us to have true context, post screenshots showing how your GSlides Create Presentation from Template Zap step is configured in EDIT mode with the field mappings visible.
Also, include a real image link that you are trying to use so we can verify if the link is in the correct format.
Thank you for the quick follow-up and the helpful link!
I’ll go ahead and get the screenshots you requested showing my GSlides – Create Presentation from Template Zap step in EDIT mode with all the field mappings. I’ll also include a real image URL (hosted on Google Drive, with the format https://drive.google.com/uc?export=view&id=XYZ).
Just to confirm — if I include a placeholder like {{Player_Picture}} in my slide and pass the image URL into that field from Zapier, it should insert the actual image on the slide, correct? Or does it still only display the URL as text unless it’s hosted in a certain way?
Excited to test this approach if it means I can skip the Apps Script complications!
Thanks again – Gerardo
@El Profe Gancz
Make sure the GDrive File sharing preferences are updated to be publicly accessible.
Following your advice to use the Google Slides → Create Presentation from Template action worked perfectly! I was able to map the form data to all the text placeholders, and it’s generating slides with the correct player info and image
However, I’ve run into one last issue:
When a new form submission includes a different image (shared properly and using a uc?export=download&id= format), the slide gets created with the previous image instead of the new one.
The form data confirms that the correct image URL is being sent through Zapier, but the image shown on the slide doesn’t update — it either repeats the old one or occasionally fails to show up at all.
The image placeholder on the slide is a text placeholder named {{Player_Picture}}, and the Slides template hasn't changed.
Do you happen to know if Slides caches the first image somehow, or is there something else I need to reset or clear to allow new images to populate each time?
Thanks again for all your help so far!
@El Profe Gancz
From your screenshot, you have a static GDrive file link in the Field: Player Picture
That is why the same picture is being used in the GSlides Template.
You need to make that URL dynamic, by replacing the entire link from a previous Zap step or by replacing the id=iID] part.
Hi Troy
Just wanted to say thanks again — your suggestion to use the Google Slides → Create Presentation from Template action worked perfectly! We were able to get both the player info and image into the slide using mapped form data.
However, we're now stuck on one last piece:
🧩 When a new form submission includes a different image, the new slide displays the image file ID as text instead of rendering the image — even though the dynamic image URL is correctly structured.
We followed your advice and made the Player Picture field dynamic by combining the base download link (https://drive.google.com/uc?export=download&id=) with the File ID pulled from Formatter Step 2.
Here’s how it’s mapped in the Slides step (screenshot attached for reference):
The text data and links render perfectly — but instead of inserting the image, the slide displays the image ID text string on the placeholder. Not sure if we’re hitting a limitation in Slides, or if the placeholder format needs to be something other than a basic text field?
Any insights would be hugely appreciated — we’re really close to the finish line!
Thanks again for all your support!
@El Profe Gancz
Help us have more info by posting screenshots showing how Zap step 2 is configured for the Formatter step along with the DATA IN/OUT for testing that Zap step.
NOTE: Make sure you are testing with a GDrive File ID that still exists in GDrive and that the file sharing preferences in GDrive for the file are set to public.
You may need to add this Zap action: GDrive - Add File Sharing Preference
Here are the screenshots for step 2
@El Profe Gancz
FYI: An easier way to extract the ID from the GDrive File link would be to use this Zap action: Formatter > Text > Split
Split by: id=
For segment: Last
That will give you the value after id=, which will be just the ID.
Things to check/try:
Make sure the generated URL in the GSlide step is a valid URL that initiates a direct download from the link
Does the File with ID still exist?
Does the File with ID have public sharing preferences?
Make sure there are no extra leading/trailing spaces before/after the URL
Make sure there is no extra space before/after the mapped variable
If needed, use this Zap action: Formatter > Text > Default Value
Use this step to create the image URL
Then map the output to the GSlides steps
That way it’s not a hybrid static/dynamic value, in case that was part of the issue
Hi Troy,
Thanks again for your continued guidance!
We’ve now implemented every suggestion you provided, including:
Generating a valid direct download URL (https://drive.google.com/uc?export=download&id=...) Using Formatter > Text > Split to cleanly extract the File ID from the Google Form upload Using Formatter > Text > Default Value to build the image URL and ensure no hybrid static/dynamic values Confirming the uploaded file exists in Drive Ensuring file sharing preferences are set to “Anyone with the link can view” Verifying there are no leading or trailing spaces in the mapped value Mapping the full URL dynamically into the Google Slides → Create from Template action Attempted replacing the text placeholder with an image placeholder and also pre-inserting an image into the template
Despite all of this, the Slides presentation still displays the direct link or file ID as text, instead of replacing it with the actual image.
At this point, I am wondering if there’s something else going on (possibly a limitation with image replacements in this action), or if it’s worth escalating further.
Really appreciate your help! Let me know if there’s anything else we can try.
@El Profe Gancz
If you had it working previously, then it seems like it would be a Zap step config or GSlides Template issue.
Explore using a different app instead of GSlides to generate the PDF
Before I explore a completely different app, I just want to confirm: Is it officially not possible to dynamically insert a new image into a Google Slides template using Google Slides → Create Presentation from Template when the image comes from a dynamic Google Drive upload?
Everything works great with text placeholders, but this one last image step is the blocker. If it’s a known limitation, I’ll shift to a different tool — just want to make sure I’m not missing a workaround.
Thanks again for all your help
@El Profe Gancz
Q: You asked: Is it officially not possible to dynamically insert a new image into a Google Slides template using Google Slides → Create Presentation from Template when the image comes from a dynamic Google Drive upload?
A: You said: Following your advice to use the Google Slides → Create Presentation from Template action worked perfectly! I was able to map the form data to all the text placeholders, and it’s generating slides with the correct player info and image
You previously tested successfully, so it does work, which makes me think it is related to: