# February Recap: New courses, AI integrations, PIN emails fixed

**URL:** <https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580>\
**Category:** Archived Announcements\
**Tags:** community-update\
**Created:** [March 8, 2025, 12:34am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580 "2025-03-08T00:34:34Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![NoCodeAndy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nocodeandy/32/62530_2.png) [@NoCodeAndy](https://community.glideapps.com/u/NoCodeAndy)\
**Post date:** [March 8, 2025, 12:34am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/1 "2025-03-08T00:34:35Z")

</div>

**Hello Gliders!**

February was another _very_ busy month.

We published new courses on Udemy and Glide University; added AI capabilities with [Pinecone](https://www.glideapps.com/docs/automation/integrations/pinecone), [OpenGraph](https://www.glideapps.com/integrations/opengraph) and [Gemini](https://www.glideapps.com/docs/automation/integrations/google-gemini) integrations; fixed PIN email deliverability issues; and started Classic Apps migration tests. (More to come on that soon.)

On the community side, we saw a bunch of new member contributions, including more tutorials, prompts for AI custom components, and project demos.

Read on for all the details.

_Note: Glide Experts get weekly updates. [Learn more about our partner program.](https://www.glideapps.com/docs/reference/account/experts)_

## Free Course: How To Build An App Without Code

[Our new course on Udemy takes you through the fundamentals of no-code development](https://www.udemy.com/course/build-an-app-without-code/) to solve business problems with custom software. You’ll learn how to structure your apps with data; design professional user interfaces; automate workflows with AI; and integrate with external tools.

👉 [https://www.udemy.com/course/build-an-app-without-code/](https://www.udemy.com/course/build-an-app-without-code/)

## Now Available: Experts Accelerator Sessions

We held our first Experts Accelerator cohort last fall with 100+ up-and-coming Glide Experts. Each week we had special guests join us to share their insights.

Those sessions are now available in [an on-demand Glide University course](https://learn.glideapps.com/dl/home/s/6f32f1/r/aQrRZnjBQ1KhaG-bxCN7oA).

P.S. This course pairs perfectly with [our Glide certifications](https://learn.glideapps.com/dl/certification)!

## Community Challenge: Field Apps

Field apps let you capture, track, and manage data while on the job site. They’re used by teams in construction, agriculture, production, sales, service, support, and more.

Kudos to @mstam2, @aditya_pandu_perdana, and @Haqyw1 for taking on the challenge to build and share their Glide app demos. I’ll be in touch about your rewards.

> [@Community Challenge: Build a Field App trophy](https://community.glideapps.com/t/community-challenge-build-a-field-app/79754):
>
> This month we’re challenging you to build a field app in Glide. Field apps let you capture, track, and manage data while on the job site. They’re used by teams in construction, agriculture, production, sales, service, support, and more. Use Case briefcaseGlide’s journey started with mobile apps, and adaptive, mobile-first interfaces continue to be core to Glide. In fact, with the launch of [Workflows](https://glideapps.com/workflows), field apps built in Glide have never been so powerful. For example, an HVAC technician may…

## Fixed: Deliverability issues with PIN emails

Our engineers have been hard at work to address the deliverability issues with PIN emails. Those should be resolved as of this week, and your users should now receive PIN emails without issue.

## February Changelog

### Features added ✨

- [Call API](https://www.glideapps.com/docs/call-api) now has advanced error handling options and returns response status
- Added [Pinecone](https://www.glideapps.com/docs/automation/integrations/pinecone) integration for new, advanced AI capabilities
- Added [Google Gemini](https://www.glideapps.com/docs/google-gemini) AI integration for code execution and advanced reasoning
- Added [OpenGraph.io](https://www.glideapps.com/integrations/opengraph) support for extracting website metadata
- New [Spinner](https://www.glideapps.com/docs/essentials/components/spinner) component available to indicate loading or waiting
- New Multiple Texts column that allows multiple roles for each user
- More accessible and theme-relevant color palettes for [Charts](https://www.glideapps.com/docs/essentials/components/charts)
- Allow the [Query column](https://www.glideapps.com/docs/query-column) to query a single row
- Ability to send PIN emails from your Microsoft Outlook account

### Bugs fixed 🪲

- Fixed issue with duplicating apps built on [Google Sheets](https://www.glideapps.com/docs/google-sheets)
- Fixed issue with [Discord integration](https://www.glideapps.com/docs/discord) incorrectly reporting errors
- Fixed issue with Array loops crashing when its value is not defined
- Fixed issue with hover state overriding focus on text inputs
- Fixed keyboard navigation in dropdown choice components
- [Make](https://www.glideapps.com/docs/make) and [Zapier](https://www.glideapps.com/docs/automation/integrations/zapier) no longer listed as experimental integrations (they’re stable!)
- Popups in the [Map component](https://www.glideapps.com/docs/essentials/components/map) now close automatically
- More clearly indicated “camera only” options for input components
- Offline mode should now render buttons as disabled where appropriate
- Various UI improvements for layouts, colour, and styling

## More from Glide and the community 🙌

- [Top 5 tools and platforms for building AI agents](https://www.glideapps.com/blog/tools-build-ai-agents)
- [The ultimate guide to AI for sales](https://www.glideapps.com/blog/ai-for-sales)
- @John_Romano wants help [building an AI publishing assistant](https://community.glideapps.com/t/building-an-ai-publishing-assistant-that-actually-gets-to-know-your-business/80118)
- @Robert_Petitto shared [a live build of a raffle prize selection system](https://community.glideapps.com/t/live-build-building-a-raffle-prize-selection-notification-system/80178)
  - Bob also showed us [how to pull website data into Glide via OpenGraph](https://community.glideapps.com/t/opengraph-integration-just-saved-me-hours-of-data-entry-time/79747)

- @iPomidor built [Wallet for managing personal finances](https://community.glideapps.com/t/wallet-managment-for-personal-finance/80259)
- @MattLB shared a [prompt template for calling actions from the AI custom component](https://community.glideapps.com/t/calling-actions-for-an-ai-component/79815)
- @MaximeBaker has a [new AI custom component prompt for leaderboards](https://community.glideapps.com/t/podium-table-for-top-ranking-ai-component/79820)
- @Gideon_Lahav_Busines shared [a new tutorial for dates and dynamic calendars](https://community.glideapps.com/t/master-date-formatting-in-glide-fix-date-issues-build-dynamic-calendars/79943)
  - Plus tutorials for [compressing images](https://community.glideapps.com/t/how-to-compress-images-in-glide-optimize-app-speed-save-storage/79812) and [searching + filtering in Big Tables](https://community.glideapps.com/t/glide-big-tables-efficient-filtering-and-searching-techniques/80326)

**Have something to add?**

- Share what you’re working on in #Project Showcase
- Share helpful tutorials, tips, and tools in #Community Resources
- Share your platform suggestions in #Feature Requests

P.S. Don’t forget to follow and tag Glide on [YouTube](https://youtube.com/c/glideapps), [LinkedIn](https://linkedin.com/company/glideapps), and [X](https://x.com/glideapps).

---

<div class="post-metadata">

**Author:** ![NoCodeAndy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nocodeandy/32/62530_2.png) [@NoCodeAndy](https://community.glideapps.com/u/NoCodeAndy)\
**Post date:** [March 8, 2025, 12:38am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/3 "2025-03-08T00:38:16Z")

</div>



---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [March 8, 2025, 12:45am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/4 "2025-03-08T00:45:02Z")

</div>

> [@NoCodeAndy](#):
>
> New Multiple Texts column that allows multiple roles for each user

OMG!!!

---

<div class="post-metadata">

**Author:** ![nathanaelb](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nathanaelb/32/43079_2.png) [@nathanaelb](https://community.glideapps.com/u/nathanaelb)\
**Post date:** [March 8, 2025, 12:50am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/5 "2025-03-08T00:50:23Z")

</div>

> [@NoCodeAndy](#):
>
> New Multiple Texts column that allows multiple roles for each user

I totally missed this announcement. Where would I find this in the builder?

@NoCodeAndy

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [March 8, 2025, 1:17am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/6 "2025-03-08T01:17:58Z")

</div>

> [@NoCodeAndy](#):
>
> New Multiple Texts column that allows multiple roles for each user

@Darren_Murphy and @Robert_Petitto 's XMas presents arrive early this year.

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [March 8, 2025, 1:18am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/7 "2025-03-08T01:18:36Z")

</div>

No… It is MY gift… 😂

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [March 8, 2025, 1:20am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/8 "2025-03-08T01:20:49Z")

</div>

![CleanShot 2025-03-08 at 08.20.34](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/5/1/51fe2e4fea4938f42397b7172e6d6fa912e10b26.png)

In Staging.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [March 8, 2025, 1:21am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/9 "2025-03-08T01:21:41Z")

</div>

Finally! 🥳

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [March 8, 2025, 1:46am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/10 "2025-03-08T01:46:58Z")

</div>

> [@NoCodeAndy](#):
>
> New Multiple Texts column that allows multiple roles for each user

Oh this is the BEST news!

---

<div class="post-metadata">

**Author:** ![NFNHello](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nfnhello/32/3371_2.png) [@NFNHello](https://community.glideapps.com/u/NFNHello)\
**Post date:** [March 8, 2025, 2:36am UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/11 "2025-03-08T02:36:08Z")

</div>

> [@NoCodeAndy](#):
>
> New Multiple Texts column that allows multiple roles for each user

woOt!

---

<div class="post-metadata">

**Author:** ![BLA\_68](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@BLA\_68](https://community.glideapps.com/u/BLA_68)\
**Post date:** [March 8, 2025, 2:56pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/12 "2025-03-08T14:56:30Z")

</div>

So much excitement on this one. What is the use case?

---

<div class="post-metadata">

**Author:** ![NoCodeAndy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nocodeandy/32/62530_2.png) [@NoCodeAndy](https://community.glideapps.com/u/NoCodeAndy)\
**Post date:** [March 8, 2025, 3:47pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/13 "2025-03-08T15:47:52Z")

</div>

More options for component visibility and workflow logic, among other things.

I’m sure our resident Experts can expand on that. 🙂

Some relevant docs:

> **[Visibility Conditions | Glide Docs](https://www.glideapps.com/docs/visibility-conditions)**
>
> Control who can view different elements of your app.

> **[Conditions, Filtering, and Visibility | Glide Docs](https://www.glideapps.com/docs/use-cases/conditions-filtering-and-visibility)**
>
> Limit the content displayed in your apps.

> **[If → Then → Else Column | Glide Docs](https://www.glideapps.com/docs/automation/computed-columns/if-then-else-column)**
>
> Produce different values based on conditions.

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [March 8, 2025, 3:59pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/14 "2025-03-08T15:59:58Z")

</div>

Multiple roles !!!

---

<div class="post-metadata">

**Author:** ![Mikaeldorval](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mikaeldorval/32/67405_2.png) [@Mikaeldorval](https://community.glideapps.com/u/Mikaeldorval)\
**Post date:** [March 9, 2025, 1:45pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/15 "2025-03-09T13:45:07Z")

</div>

> [@NoCodeAndy](#):
>
> New Multiple Texts column that allows multiple roles for each user

Does that mean a row will be able to have multiple row owners using only one column?

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [March 9, 2025, 1:47pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/16 "2025-03-09T13:47:00Z")

</div>

It would also allow to set more than a single role in users table.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [March 9, 2025, 1:51pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/17 "2025-03-09T13:51:47Z")

</div>

> [@Mikaeldorval](#):
>
> > [@NoCodeAndy](#):
> >
> > New Multiple Texts column that allows multiple roles for each user
> 
> Does that mean a row will be able to have multiple row owners using only one column?

You’ve always been able to that, by using Roles as Row Owners.

The significance of this feature is that it now allows you to assign multiple roles to individual users with native tables. Up until now this has only been possible when using a Google Sheet as the source of User Profiles.

---

<div class="post-metadata">

**Author:** ![Mikaeldorval](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mikaeldorval/32/67405_2.png) [@Mikaeldorval](https://community.glideapps.com/u/Mikaeldorval)\
**Post date:** [March 9, 2025, 2:18pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/18 "2025-03-09T14:18:32Z")

</div>

My use case is having multiple specific users assigned to rows as row owners. Tasks for example:

Task 1:  
User 1 email, user 8 email, user 3 email

Task2:  
User 2 email, user 3 email, user 9 email, user 14 email

Would that be possible using one multiple texts column?

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [March 9, 2025, 2:41pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/19 "2025-03-09T14:41:16Z")

</div>

What you should do in your case is arrange your users into groups, use the group names as role names, and then use those as row owner values in your Tasks table.

Where the multiple texts column will help you is that it will allow you to add users to multiple groups.

If we take your example, let’s say you name them “Group 1” & “Group 2”. User 3 is in both groups, so his Role would be “Group 1, Group 2”.

---

<div class="post-metadata">

**Author:** ![Mikaeldorval](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mikaeldorval/32/67405_2.png) [@Mikaeldorval](https://community.glideapps.com/u/Mikaeldorval)\
**Post date:** [March 9, 2025, 3:04pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/20 "2025-03-09T15:04:10Z")

</div>

But I don’t know in which group users will need to be. There could be thousands of tasks so that means thousands of different possibilities. Every time a new task is created, it has it’s own set of assigned users.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [March 9, 2025, 3:32pm UTC](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580/21 "2025-03-09T15:32:56Z")

</div>

I’d say it’s still doable, but could get quite complicated.  
But for the sake of simplicity, perhaps you’re better off just pre-allocating enough owner columns to cover the maximum number of users per task?

[Next page](https://community.glideapps.com/t/february-recap-new-courses-ai-integrations-pin-emails-fixed/80580.md?page=2)
