S24-E02 – BuiltOnAir Live Podcast Full Show

To get all the latest videos and demonstrations from the BuiltOnAir Podcast, subscribe and get notified on our Youtube channel here and our newsletter/community here.

FULL EPISODE VIDEO

Watch the full video of the show.

FULL EPISODE AUDIO

Listen to the full Audio podcast for this episode here. Or add to your favorite podcast player

Listen On: Apple | Overcast | Spotify


The BuiltOnAir Podcast is Sponsored by On2Air – Integrations and App extensions to run your business operations in Airtable.

Start a FREE 14 Day Trial of On2Air Now


In This Episode

Welcome to the BuiltOnAir Podcast, the live show. The BuiltOnAir Podcast is a live weekly show highlighting everything happening in the Airtable world.

Check us out at BuiltOnAir.com. Join our community, join our Slack Channel, and meet your fellow Airtable fans.

Episode Summary

In this episode of BuiltOnAir, the team dives into best practices for maintaining and updating your Airtable bases. They discuss the importance of creating a new field instead of editing an existing one, comparing changes between the new and old fields, and deciding how to make the change. They also share their own experiences and tips for using formulas, single select fields, and checkboxes, and discuss common pitfalls to avoid. Whether you’re a seasoned Airtable user or just starting out, this episode is packed with actionable advice for optimizing your workflow.

⏱ Timeline:

  • 8:14 - Discussing Airtable’s new feature: custom extensions for interfaces
  • 14:18 - Jumping into best practices for maintaining and updating Airtable bases
  • 17:21 - Creating a new field instead of editing an existing one
  • 24:05 - Comparing changes between the new and old fields
  • 29:52 - Using formulas and single select fields

Full Transcription

The full transcription for the show can be found here:

[00:00:07]
All right.

[00:00:07] Welcome back into the BuiltOnAir

[00:00:10] podcast.

[00:00:11] We are in season twenty four, episode two.

[00:00:14] Good to be back with you, with you,

[00:00:16] with everybody.

[00:00:17] Got Kamille, Ali, myself, Dan.

[00:00:20] back to chat and we’re going to do

[00:00:23] a deep dive today into best practices

[00:00:26] around how to maintain and update your

[00:00:29] bases and some general housekeeping and

[00:00:35] ways to stay up to date.

[00:00:38] Before that begins, let’s see.

[00:00:41] I didn’t see any big announcements.

[00:00:43] It’s been relatively quiet on the Airtable

[00:00:46] front.

[00:00:46] Not any news or some events coming up.

[00:00:50] We were talking before we started.

[00:00:53] airspace la is what they’re calling it i

[00:00:56] think airspace is their new kind of name

[00:00:59] for their conferences or mini conferences

[00:01:03] um so that’s coming up in may looks

[00:01:05] like this week in san francisco so if

[00:01:09] you’re out in that area in europe i

[00:01:12] believe there’s one also um and so yeah

[00:01:17] a few things going on

[00:01:20] What else?

[00:01:20] Also, I started playing with HyperAgent.

[00:01:23] I finally got access.

[00:01:26] Shout out to Rob, helped make that happen.

[00:01:30] And I was doing it later today.

[00:01:33] I’m helping out at the local university

[00:01:36] where I graduated from.

[00:01:38] I’m helping judge a competition.

[00:01:42] And so I ran it through HyperAgent,

[00:01:44] all the things that I need to be

[00:01:47] looking out for, did market research on,

[00:01:49] it’s like an investment competition.

[00:01:52] So I did some market research.

[00:01:55] So HyperAgent came in handy for that, ran,

[00:01:57] did a bunch of market research and

[00:02:00] anAllisis to help me prepare for that event

[00:02:03] this afternoon.

[00:02:04] So it was good.

[00:02:06] I don’t do a ton of that kind

[00:02:08] of work on my day to day.

[00:02:10] So, you know, so other things,

[00:02:15] I don’t know.

[00:02:16] I’m still kind of mixed on this approach

[00:02:19] to agents as far as like how I

[00:02:23] would use them on my day-to-day.

[00:02:25] I’m sure for certain types of work,

[00:02:27] they’re relevant.

[00:02:30] Claude or Anthropic just announced their

[00:02:34] kind of similar approach to managing

[00:02:37] agents.

[00:02:38] So I played with that as well this

[00:02:41] last week.

[00:02:43] I probably would lean towards using,

[00:02:47] I’m already a Cloud Code subscriber and on

[00:02:51] the team’s plan.

[00:02:52] And so I’d probably lean more towards

[00:02:56] using their approach for some of this,

[00:02:58] but HyperAgent definitely has a better

[00:03:00] user interface than the Anthropic one.

[00:03:05] And so I think for the right customer,

[00:03:09] it could come in handy,

[00:03:10] so I don’t know.

[00:03:12] Any other updates before we jump in?

[00:03:16] I don’t think so.

[00:03:18] There was one kind of update,

[00:03:22] like product release that kind of slipped

[00:03:24] through the cracks because it doesn’t

[00:03:26] really affect too many people since it’s

[00:03:29] only for enterprises.

[00:03:30] But packages,

[00:03:32] which is I think the new name for

[00:03:34] managed apps,

[00:03:35] now includes custom extensions.

[00:03:37] Custom extensions for interfaces,

[00:03:40] I should say, which are still in beta.

[00:03:42] But if you create a managed app,

[00:03:46] AKA package that includes one,

[00:03:49] it’ll come along with it.

[00:03:50] So useful.

[00:03:51] Yeah.

[00:03:52] Yeah.

[00:03:55] Yeah.

[00:03:55] I think packages, I think they refer to.

[00:04:05] I’ve seen packages used to kind of like

[00:04:08] be the overarching name for any base

[00:04:13] automation interface,

[00:04:15] like anything within.

[00:04:18] I don’t know.

[00:04:18] I’ve seen packages used.

[00:04:21] I don’t think they’re renaming manage

[00:04:23] components, but maybe they are.

[00:04:28] If you use the API to create a

[00:04:32] new instance of a managed app,

[00:04:34] I’m pretty sure it’s create package or

[00:04:36] something like that.

[00:04:37] Yeah, I did see it in the API.

[00:04:39] Maybe that’s where I saw it,

[00:04:40] but I didn’t realize that referred to

[00:04:41] manage components.

[00:04:44] Components, I think,

[00:04:45] are still called components.

[00:04:47] I think it’s specifically managed apps.

[00:04:49] But I also could be wrong.

[00:04:51] Airtable sometimes changes the names for

[00:04:53] things and then doesn’t really tell

[00:04:55] anybody.

[00:04:56] They just sort of do it.

[00:05:00] I’m curious your thoughts.

[00:05:01] So I’ve used these managed.

[00:05:05] I always try to figure out what to

[00:05:07] call them because we kind of took the

[00:05:10] approach of doing everything as a managed

[00:05:13] component.

[00:05:15] and not use managed apps and because with

[00:05:18] a managed component you can deploy

[00:05:20] everything which is the same as a managed

[00:05:22] app but if you need to hold something

[00:05:24] back you can so we kind of figured

[00:05:28] there’s really no difference between

[00:05:30] deploying everything as a managed

[00:05:31] component versus deploying it as a managed

[00:05:34] app so we we kind of avoid using

[00:05:37] the managed app approach

[00:05:40] The use case I wanted to use them

[00:05:42] for, I haven’t fully implemented this,

[00:05:44] but I’m doing some testing on my own

[00:05:47] for this.

[00:05:49] I just went with managed apps because it

[00:05:51] really was take the whole thing,

[00:05:53] and I didn’t want anything to be…

[00:05:56] to not go through.

[00:05:58] So it’s kind of a shortcut.

[00:06:00] But thinking through,

[00:06:02] there really is no downside, I think,

[00:06:05] unless you forget to click on a new

[00:06:07] field, for example,

[00:06:08] to add to the component.

[00:06:10] Other than that,

[00:06:11] there’s no real reason not to.

[00:06:13] Yeah.

[00:06:13] Yeah, that makes sense.

[00:06:20] So cool, well,

[00:06:22] that’s a little bit of updates of what’s

[00:06:26] going on.

[00:06:27] Yeah,

[00:06:27] I’d be curious to see what new features

[00:06:31] Airtable is working on.

[00:06:35] Even in the what’s new,

[00:06:37] it’s been relatively quiet for a month or

[00:06:41] so.

[00:06:42] So we’re new for some new,

[00:06:44] we’re due for some new features.

[00:06:48] Certainly.

[00:06:49] I’ve been having a lot of trouble with

[00:06:53] and I’ve been in touch with support a

[00:06:55] little bit.

[00:06:56] I need to write to them again because

[00:06:57] I’m still seeing this problem with the

[00:07:00] recent update.

[00:07:02] They called it a new feature where they

[00:07:04] hold back if you have over five thousand

[00:07:06] records on a table and you’re trying to

[00:07:08] load over a thousand of them.

[00:07:10] They only load the first thousand.

[00:07:13] Ever since that change,

[00:07:15] I’ve been having some really weird UI

[00:07:17] issues where it’ll just literally show my

[00:07:20] entire row, the whole record as empty.

[00:07:23] And then I expand it.

[00:07:26] I see all the field values.

[00:07:27] And when I close it and click on

[00:07:28] the record again, all the values show up.

[00:07:31] And it affects the summary bar.

[00:07:34] All the summary totals are different.

[00:07:36] Like they’re wrong.

[00:07:36] They’re just wrong.

[00:07:38] And so it’s like a major issue,

[00:07:40] I think,

[00:07:41] just calling that out to be aware of.

[00:07:46] It tripped me up several times because for

[00:07:51] me,

[00:07:51] I’ve seen it where it’s like the whole

[00:07:52] row is blank,

[00:07:53] but sometimes it’s only like one or two

[00:07:55] fields are blank.

[00:07:56] And I’m like, okay,

[00:07:57] I did something wrong here.

[00:07:59] I accidentally cleared out a whole column,

[00:08:01] which is something you could do.

[00:08:03] And automation’s gone rogue.

[00:08:05] No, the data’s there.

[00:08:06] It’s just invisible,

[00:08:08] which isn’t helpful at all.

[00:08:08] Yeah.

[00:08:09] Not at all.

[00:08:12] I saw it where a formula…

[00:08:15] that should have been a different value

[00:08:18] didn’t update even when the other fields

[00:08:21] were.

[00:08:21] And I even like changed the formula to

[00:08:23] like specifically call it out and it still

[00:08:26] wouldn’t update.

[00:08:27] Although I think after a paid page

[00:08:29] refresh, it did update, but yeah,

[00:08:31] stuff like that.

[00:08:32] It’s really weird.

[00:08:37] I understand wanting to improve

[00:08:41] performance,

[00:08:42] but there’s something about the

[00:08:43] implementation where there have been

[00:08:45] multiple times in the past week or two

[00:08:48] where I was sitting and looking at

[00:08:49] something and being like,

[00:08:50] am I bad at Airtable now?

[00:08:53] Why isn’t this formula working?

[00:08:55] And no,

[00:08:56] it was just the data wouldn’t update.

[00:08:59] So I think if you’re going to limit

[00:09:02] the number of records that are queried at

[00:09:05] any given time,

[00:09:07] You got to load the whole query then.

[00:09:09] You can’t load half of the record because

[00:09:12] then you’re going to confuse everybody.

[00:09:15] Yeah.

[00:09:17] It’s been quite confusing.

[00:09:18] And yeah,

[00:09:19] half the time I notice because I have

[00:09:21] another formula that is like,

[00:09:23] if this field is not empty,

[00:09:25] return something.

[00:09:27] And I’m like,

[00:09:27] that whole formula field’s filled out,

[00:09:29] but this field’s empty.

[00:09:30] Like, what’s going on?

[00:09:32] And I refresh.

[00:09:32] Oh, the field’s not empty.

[00:09:34] It’s just, like you said, invisible.

[00:09:35] Yeah.

[00:09:39] Yeah,

[00:09:39] and I’m sure that’s preparation for

[00:09:41] increasing the record limit,

[00:09:43] which we all want to see.

[00:09:45] So they have to figure out how to

[00:09:47] survive in a pagination world.

[00:09:53] And I hope that they don’t just change

[00:09:56] it on the UI side,

[00:09:57] because in the scripting side,

[00:10:00] there’s no way to paginate or anything.

[00:10:04] You have to read through everything.

[00:10:05] There’s no way to search.

[00:10:09] So I hope they fix it across the

[00:10:12] board.

[00:10:13] If they increase the record limit from the

[00:10:16] current maximum is, I believe,

[00:10:18] five hundred thousand.

[00:10:19] If you’re on the enterprise level for the

[00:10:21] whole base, you’ve got to update.

[00:10:25] You have to update the API across the

[00:10:29] board because you still can only create,

[00:10:31] update,

[00:10:32] delete ten at a time if you’re on

[00:10:34] the web API, which is absurd.

[00:10:38] And then with the scripting API,

[00:10:41] it’s fifty.

[00:10:42] That’s not terrible.

[00:10:44] I think it should be more if the

[00:10:45] maximum keeps increasing.

[00:10:47] But if you are querying with a script

[00:10:50] in the automation and you feed it record

[00:10:53] IDs so you can limit

[00:10:55] what you’re returning,

[00:10:56] you can only query a hundred record IDs

[00:10:59] at a time,

[00:11:01] or you query the entire table,

[00:11:03] which can be up to two hundred and

[00:11:04] fifty thousand records.

[00:11:06] That doesn’t make sense to me.

[00:11:07] You should be able to query up to

[00:11:09] two hundred and fifty thousand record IDs.

[00:11:13] It’s a bizarre limitation.

[00:11:15] Yeah, the hundred, the hundred,

[00:11:19] every query is a hundred.

[00:11:21] So if you need to query the entire

[00:11:23] table, that’s a lot of queries.

[00:11:27] Yeah.

[00:11:27] Even if you know the exact subset of

[00:11:30] records you need,

[00:11:31] you probably have to query the whole table

[00:11:33] and then filter it down,

[00:11:35] which is tremendously inefficient.

[00:11:38] Yeah,

[00:11:38] especially because you can only select in

[00:11:40] the scripting API, what,

[00:11:42] a hundred records with the record ID

[00:11:44] parameter in select records async?

[00:11:47] Yeah.

[00:11:48] You can find a thousand in the find

[00:11:50] record step,

[00:11:50] but you can only select a hundred.

[00:11:53] Put that in a loop.

[00:11:54] Yeah.

[00:11:56] You have to promise not all that if

[00:11:58] you want to get the limit.

[00:12:00] So there’s all of these numbers that we

[00:12:03] all happen to know off the top of

[00:12:04] our head.

[00:12:05] But we’ve said the numbers ten, fifty,

[00:12:08] one hundred,

[00:12:08] one thousand and two hundred and fifty

[00:12:10] thousand, all different intervals.

[00:12:15] And they should clean that up.

[00:12:17] Pick one number and make that the limit.

[00:12:20] That would be great.

[00:12:21] I often have thought of making a little

[00:12:22] sticky note to just put next to my

[00:12:24] desk with these numbers on them because

[00:12:26] I’m like, wait,

[00:12:27] is it a hundred or is it a

[00:12:29] hundred fifty?

[00:12:29] Is it two hundred?

[00:12:30] Is it two fifty?

[00:12:31] I don’t know.

[00:12:33] But yeah, it is wild.

[00:12:37] Yeah.

[00:12:38] Lots to remember.

[00:12:41] All right.

[00:12:42] Why don’t we jump in?

[00:12:43] Let’s talk some best practices.

[00:12:45] Ellie’s going to guide us through and

[00:12:47] we’ll add some thoughts along the way.

[00:12:51] Yes, that would be great.

[00:12:56] I’ve been doing just a lot,

[00:12:58] a lot of maintenance upgrades,

[00:13:01] moving things around,

[00:13:03] helping clients change things up.

[00:13:05] And I’ve developed over the years,

[00:13:09] a list of best practices that I’m trying

[00:13:11] to like actually get into a list format.

[00:13:15] But I’m going to share some of them

[00:13:16] today just kind of

[00:13:17] glaze the surface of what I’m talking

[00:13:21] about.

[00:13:21] And then we can get into the nitty

[00:13:23] gritty, I suppose,

[00:13:24] a little bit on some of them.

[00:13:27] This is kind of hard to find good

[00:13:29] examples for because while I’m doing it

[00:13:31] all the time,

[00:13:32] I couldn’t just copy my client bases.

[00:13:33] So I’m trying to apply my real world

[00:13:36] scenarios to some templates and things I

[00:13:39] can share here.

[00:13:42] But I’m going to start by talking about

[00:13:46] fields.

[00:13:47] So let’s say this is a base I’m

[00:13:53] working on.

[00:13:54] This is actually a very,

[00:13:55] very old template that Airtable had once

[00:13:57] upon a time.

[00:13:58] You can tell by the photos that they

[00:14:01] have loaded here.

[00:14:02] These look, I’m sure,

[00:14:03] familiar to many of us.

[00:14:04] Yeah.

[00:14:04] Open that down.

[00:14:08] I said those are OG photos.

[00:14:13] This was like the home page had a

[00:14:15] lot of these characters on them for a

[00:14:16] long time.

[00:14:19] But let’s say with this new feature that

[00:14:22] Airtable has around being able to return a

[00:14:24] formula as a single select,

[00:14:27] I want to implement that into this base.

[00:14:29] I have this formula field here called

[00:14:32] status.

[00:14:33] I have a field called term date.

[00:14:37] I’m needing to fill in the termination

[00:14:39] date for an employee and switch the status

[00:14:42] manually,

[00:14:43] or I could set up an automation to

[00:14:45] do this for me.

[00:14:46] And in fact,

[00:14:46] I do in this base have an automation

[00:14:48] running that when I fill in a term

[00:14:50] date,

[00:14:50] it’s going to automatically flip that

[00:14:52] status to inactive.

[00:14:54] So once upon a time,

[00:14:55] that might be how you would set it

[00:14:57] up because those were the tools available

[00:14:58] at the time.

[00:15:00] But now that we have this awesome new

[00:15:02] feature where we can get the same exact

[00:15:04] look and feel out of a field,

[00:15:06] get rid of our automation,

[00:15:07] get rid of manual entry.

[00:15:09] Why not do that, right?

[00:15:12] So what I’m going to do is just

[00:15:14] kind of talk through how I would start

[00:15:16] to approach something like this.

[00:15:19] Because when you’re learning Airtable or

[00:15:22] when you’re first starting to try and do

[00:15:23] something like this, it might be like, oh,

[00:15:25] am I going to break things?

[00:15:27] And like the answer is yes,

[00:15:28] you probably will.

[00:15:30] So you need to be aware of how

[00:15:32] things break, when they break,

[00:15:34] what’s going to happen if they break,

[00:15:36] what things breaking is a big deal and

[00:15:38] what’s not.

[00:15:40] That kind of thing is what we’re talking

[00:15:42] about today.

[00:15:45] So I’m going to start by the very

[00:15:47] first thing that I do for this is

[00:15:51] I create a brand new field.

[00:15:53] I’m not going to edit the existing field.

[00:15:56] I’m going to create a brand new field

[00:15:57] that has the end result that I want.

[00:16:02] And ultimately,

[00:16:04] I guess maybe I should kind of just

[00:16:06] talk through this.

[00:16:08] my process in general as an overview,

[00:16:11] I try to duplicate the field or create

[00:16:13] a new version of it depending on what

[00:16:15] the field type is.

[00:16:16] Wouldn’t really make sense to duplicate

[00:16:18] this because I’m going to turn it into

[00:16:19] a formula.

[00:16:21] But if it already were a formula,

[00:16:22] I would just duplicate that and edit the

[00:16:24] formula.

[00:16:26] Then I compare the new field to the

[00:16:29] old field,

[00:16:31] look at any changes that are happening

[00:16:32] between them,

[00:16:34] address anything that looks wrong, right?

[00:16:37] Like,

[00:16:38] I theoretically should have the same

[00:16:40] values across this,

[00:16:42] between this field and my new one should

[00:16:44] be identical.

[00:16:47] Theoretically, big asterisk there.

[00:16:50] Then I wanna decide how I wanna make

[00:16:54] the change.

[00:16:54] And there’s a whole series of things that

[00:16:57] you wanna think about when you’re doing

[00:16:58] that,

[00:17:00] namely around field types is what the

[00:17:03] biggest driver there is, I would say.

[00:17:07] So I duplicate, I compare changes,

[00:17:10] and then I decide if I need to

[00:17:12] create a brand new field or replace the

[00:17:14] existing field, and then go from there.

[00:17:18] questions or thoughts so far?

[00:17:25] Okay.

[00:17:25] So I want to write a new status

[00:17:28] field.

[00:17:28] And what I typically do is I have

[00:17:30] this little nomenclature

[00:17:33] where I have my shorthand emojis.

[00:17:37] So I usually use this little test tube

[00:17:39] emoji when I am testing out a new

[00:17:42] field.

[00:17:43] So it tells me like, hey,

[00:17:44] this is a new field.

[00:17:46] It’s not in the workings yet.

[00:17:48] Like I’m trying it out.

[00:17:49] And if I get stuck,

[00:17:50] if I say somebody calls me,

[00:17:52] I have to go pick up my son

[00:17:52] from daycare.

[00:17:53] And if I leave,

[00:17:54] I like come back to this two weeks

[00:17:55] later, I see that test tube.

[00:17:56] I’m like, oh, I was working on that.

[00:18:00] So I’m gonna say if,

[00:18:02] term date, I know they are inactive.

[00:18:12] Take it a step further even and say,

[00:18:14] if date of hire,

[00:18:16] we could even get super fancy and be

[00:18:18] like,

[00:18:18] if date of hire is less than or

[00:18:20] equal to today,

[00:18:21] let’s keep it simple for now.

[00:18:24] And then TBD.

[00:18:31] Now my least favorite part of this

[00:18:34] feature, although I love this feature.

[00:18:37] I yearn for the day when we can

[00:18:40] automatically update these or it’s smart

[00:18:42] enough to do it itself.

[00:18:45] But we want to.

[00:18:48] While you’re doing this,

[00:18:50] one thing I noticed that it will always

[00:18:53] come in when you change a formula to

[00:18:55] output as a single select option,

[00:18:58] it’ll always start with one option.

[00:19:00] And I think the unique ID for it

[00:19:02] is default.

[00:19:03] Like it doesn’t have SEL and then fourteen

[00:19:07] characters after that,

[00:19:08] which is the normal.

[00:19:09] I’m pretty sure it’s unique ID is

[00:19:12] literally the word default.

[00:19:14] I tend,

[00:19:15] if I know I’m not going to have

[00:19:16] a default,

[00:19:17] I tend to delete it and then make

[00:19:19] a new one.

[00:19:21] They also might have changed that since I

[00:19:23] first noticed because it doesn’t make

[00:19:24] sense to do that.

[00:19:26] That’s a really great question.

[00:19:28] I do.

[00:19:28] So sometimes I do delete it.

[00:19:30] Sometimes I just type over it.

[00:19:32] I think I just typed over it when

[00:19:33] I was just doing this just now.

[00:19:36] That’s really interesting.

[00:19:38] I want to know.

[00:19:40] why is this taking forever i don’t know

[00:19:42] Airtables struggling i’m gonna do that

[00:19:47] let’s let’s just look at it and see

[00:19:52] this is a sidebar tangent but that is

[00:19:54] an interesting thing i want to know uh

[00:19:57] we’ll do let’s table and then while you’re

[00:20:01] typing

[00:20:03] I noticed, yeah,

[00:20:04] you didn’t select a default.

[00:20:06] Selecting a default gets you in trouble

[00:20:09] because sometimes you don’t realize that

[00:20:12] there’s a default selected if it doesn’t

[00:20:14] match any of them.

[00:20:16] And so you see all these values that

[00:20:18] are going to the default when you think

[00:20:21] it’s matching the criteria for that value,

[00:20:24] but it’s actually going there because it’s

[00:20:26] the default value.

[00:20:31] Okay, so it changed.

[00:20:32] It does have the STL, but… Oh, no.

[00:20:36] Yeah, that was the first one.

[00:20:40] See, now, Airtable, why would you do this?

[00:20:43] Hi.

[00:20:43] Does that mean that, like,

[00:20:47] everyone that has that that doesn’t delete

[00:20:49] it now…

[00:20:50] That ID is like a million people have

[00:20:54] SEL formula default as an ID in their

[00:20:56] base.

[00:20:56] They sure do.

[00:20:58] Even if you pick another value as the

[00:21:00] default.

[00:21:01] Yes.

[00:21:01] Yeah, let’s try.

[00:21:04] Let’s see.

[00:21:05] So if we do TBD as the default

[00:21:06] and then.

[00:21:06] Run it again.

[00:21:06] See?

[00:21:06] Yeah.

[00:21:20] Yeah, I just thought that was strange.

[00:21:22] It doesn’t necessarily affect how you

[00:21:26] would use this, I guess, but yeah.

[00:21:30] So every now and again,

[00:21:31] your table drops a new feature and it’s

[00:21:33] great,

[00:21:33] like formatting a formula as a single

[00:21:35] select, great addition.

[00:21:37] And then there’s one little thing about it

[00:21:39] where you’re like, but why?

[00:21:41] This is the but why.

[00:21:42] Yeah.

[00:21:43] That’s so interesting.

[00:21:47] Wow.

[00:21:47] Interesting.

[00:21:48] I usually,

[00:21:49] if I do use the formula default,

[00:21:51] which I usually don’t, but if I do,

[00:21:54] I might,

[00:21:55] I would like have it deliberately say

[00:21:58] formula error and like red flashing emoji,

[00:22:03] like problem.

[00:22:05] So that way I know,

[00:22:05] cause if it’s empty,

[00:22:06] like there’s a difference between it being

[00:22:08] empty and supposed to be empty.

[00:22:14] Yes.

[00:22:14] If it should be empty,

[00:22:15] it should be empty.

[00:22:16] But if it shouldn’t be empty,

[00:22:17] it’s just not returning the right value.

[00:22:19] I want to know that.

[00:22:22] But yeah,

[00:22:22] you have to be really careful with that

[00:22:23] option.

[00:22:24] Awesome.

[00:22:29] Okay, so as you can see,

[00:22:31] my two formulas do not match or my

[00:22:34] new formula does not match this field.

[00:22:37] And that’s probably because this

[00:22:39] automation failed at one point that I have

[00:22:41] to set up to flip this active to

[00:22:43] inactive.

[00:22:45] So if I were to get rid of

[00:22:45] that and put it back,

[00:22:48] my automation should run and now

[00:22:50] everything matches.

[00:22:52] Um,

[00:22:53] but like the whole point I’m trying to

[00:22:55] get at here is they might not match

[00:22:58] and you want to make sure that your

[00:22:59] formula is correct before you’re moving

[00:23:02] any forward.

[00:23:04] Um,

[00:23:05] and what I generally do is if I’m

[00:23:07] working in a big table with a lot

[00:23:09] of records and I’m trying to make a

[00:23:11] change, I will do two things.

[00:23:15] One here, I’m going to undo.

[00:23:19] I’m going to just shut this automation off

[00:23:22] because I want these to not match for

[00:23:23] a moment.

[00:23:24] And if I had that automation on,

[00:23:28] it would just keep fighting me,

[00:23:29] flipping it back over and over.

[00:23:31] So what I typically do,

[00:23:33] we’ll pretend there’s like a hundred

[00:23:35] thousand records on this table.

[00:23:38] I first write a formula field and I

[00:23:40] say,

[00:23:41] if status does not equal

[00:23:46] new status, anything, return something.

[00:23:51] And then I’m going to be trying to

[00:23:54] use the summary bar.

[00:23:55] I’ll be like, is it filled?

[00:23:56] Make sure you have no filters on your

[00:23:58] table.

[00:23:58] And if you want to be really,

[00:24:00] really smart about it,

[00:24:01] filter by this field and find this view

[00:24:04] where things are not empty.

[00:24:07] Then you look at everything that does not

[00:24:10] match, figure out why they don’t match.

[00:24:12] Maybe your formula is right and the table

[00:24:16] original field was wrong.

[00:24:18] Maybe the original field is right and your

[00:24:19] formula is wrong and you need to go

[00:24:21] back to the drawing board and try and

[00:24:22] rewrite that.

[00:24:23] So I do all of this first before

[00:24:25] I’ve even touched anything that’s existing

[00:24:28] in the table.

[00:24:29] I’m just adding and comparing.

[00:24:33] One thing on your calculation,

[00:24:36] what I love doing is formatting as a,

[00:24:39] as a, um, check box.

[00:24:43] So make it,

[00:24:44] so I would say instead of using,

[00:24:46] if just change your if to and, or,

[00:24:50] or so that,

[00:24:51] and then you got true or false.

[00:24:53] Like that’s what I always do.

[00:24:55] That’s a nice shorthand because I always

[00:24:58] do if true false.

[00:25:01] Yeah.

[00:25:01] Okay.

[00:25:04] Yeah,

[00:25:04] and then you can format it as a

[00:25:06] red flag.

[00:25:07] You can change the syntax of the display,

[00:25:13] the style.

[00:25:13] I do that all the time.

[00:25:16] If this were a field I were keeping

[00:25:17] around,

[00:25:18] I would do that and leave it that

[00:25:20] way and have it be like that or

[00:25:22] return.

[00:25:22] Sometimes I return like a single red

[00:25:24] emoji,

[00:25:24] but I’ve honestly come back to doing this

[00:25:28] to doing the checkbox return and let me

[00:25:31] we’re talking best practices here if

[00:25:33] you’ll indulge me for a moment i hate

[00:25:35] checkbox fields i do not use checkbox

[00:25:38] fields i do not let my clients use

[00:25:40] checkbox fields unless they are like

[00:25:43] adamant um and that is simply because it

[00:25:47] is so so so so easy to check

[00:25:50] a checkbox without noticing that you

[00:25:52] checked it yeah and to uncheck a checkbox

[00:25:55] without noticing that you checked it

[00:25:58] It caused so many problems.

[00:26:00] I’ve just stopped using them altogether.

[00:26:02] I use a single select even if it

[00:26:04] only has one option in it.

[00:26:06] It works just as well.

[00:26:08] There’s two clicks,

[00:26:08] but then you’ve got more intention.

[00:26:11] However,

[00:26:12] I love returning things as a checkbox

[00:26:14] because my favorite thing about this is

[00:26:16] when you filter by it,

[00:26:20] you don’t have to do the second,

[00:26:21] say I only want the things that are

[00:26:22] empty.

[00:26:24] Now I don’t need to go and say

[00:26:25] is empty.

[00:26:26] It’s like already done.

[00:26:27] It just saves so many more clicks,

[00:26:28] which is awesome.

[00:26:29] Yeah.

[00:26:32] And with checkbox,

[00:26:33] the other reason to not use them,

[00:26:36] you know,

[00:26:36] as input fields is I’ve had it so

[00:26:39] many times where I think it’s a Boolean

[00:26:41] state where it’s either on or off.

[00:26:43] And then eventually you’re like, oh,

[00:26:45] there’s a third state it needs to be.

[00:26:47] And now you got to change the field

[00:26:49] to a single select and update all your

[00:26:51] views and everything.

[00:26:53] Yep.

[00:26:55] A hundred percent.

[00:26:56] And that’s,

[00:26:57] that’s like part of it as well as

[00:26:59] oftentimes it’s like, okay,

[00:27:00] we have the checkbox, but I’m like,

[00:27:02] I can’t tell if someone’s reviewed this or

[00:27:03] not.

[00:27:04] Like,

[00:27:04] is this in the pre-touched stage or like,

[00:27:07] has somebody looked at this and decided

[00:27:09] not to check the box?

[00:27:10] I don’t know.

[00:27:12] Yeah, I find checkboxes best,

[00:27:15] not formatting a formula as a checkbox,

[00:27:18] the literal checkbox field.

[00:27:20] I find them best for utility fields,

[00:27:22] like use this to begin an automation.

[00:27:28] And that is the trigger,

[00:27:29] because you can’t have it trigger while

[00:27:32] it’s checked again, which I like.

[00:27:36] Other than that,

[00:27:37] I don’t really display checkboxes to

[00:27:39] users.

[00:27:40] I have buttons click or unclick a checkbox

[00:27:44] for them.

[00:27:46] But again,

[00:27:47] that means that they don’t have access to

[00:27:49] the base where they can go in and

[00:27:51] see it themselves,

[00:27:51] because it is really easy to misclick.

[00:27:57] Exactly.

[00:27:57] Yeah, where it triggers an automation,

[00:28:00] but a button is what updates it.

[00:28:02] Yeah.

[00:28:02] Yeah.

[00:28:05] For sure.

[00:28:07] Again, Airtable template.

[00:28:09] I did not add this checkbox here.

[00:28:12] Embarrassing.

[00:28:16] Awesome.

[00:28:16] Let’s go a little bit forward.

[00:28:18] I need to add something to this that

[00:28:20] I meant to add before this call,

[00:28:21] which is,

[00:28:23] let’s pretend that we’re using the status

[00:28:25] field on this table, the original status.

[00:28:31] Let’s say this view is filtered where

[00:28:38] We’re only looking at the active

[00:28:40] employees.

[00:28:41] Okay, so let’s say I’m like,

[00:28:49] everything’s correct.

[00:28:51] My formula, I trust it.

[00:28:53] I’m ready to make the change.

[00:28:55] I want to use this field instead of

[00:28:57] this field.

[00:28:59] Now, my next step depends, is like highly,

[00:29:02] highly variable.

[00:29:04] And I would love at some point,

[00:29:07] one of my like goals in my dwindling

[00:29:10] free time is I would love to create

[00:29:12] a resource that I could share with people

[00:29:14] that’s like,

[00:29:15] is it okay to change this field type

[00:29:17] to this field type?

[00:29:19] Are you gonna break things if you do

[00:29:20] that?

[00:29:22] I happen to just know a lot of

[00:29:23] them off the top of my head,

[00:29:24] but some of them I need to test

[00:29:27] out on the fly before I do it.

[00:29:28] So I would love to just have that

[00:29:30] as a resource to look at when I’m

[00:29:31] doing this.

[00:29:32] But I happen to know I cannot change

[00:29:35] this status dropdown to a formula,

[00:29:38] even though it’s returning the same values

[00:29:41] outwardly.

[00:29:44] It will break things.

[00:29:45] If I change this status field to,

[00:29:49] the formula, do the same exact thing.

[00:29:51] Edit the field, turn it into a formula,

[00:29:55] have the same like copy paste,

[00:29:56] do everything.

[00:29:58] Anything that is using my status field as

[00:30:00] it currently stands will break.

[00:30:04] Because as we just looked at every one

[00:30:06] of these underlying single select values

[00:30:10] has its own ID and under the hood,

[00:30:12] that’s what Airtable is using.

[00:30:13] They’re not using the value active.

[00:30:16] They’re using SEL blah, blah, blah, blah,

[00:30:19] blah.

[00:30:20] I can’t just change that out.

[00:30:22] I wish I could.

[00:30:24] This particular situation, you can’t.

[00:30:29] Instead,

[00:30:30] what I do is I leave my new

[00:30:32] field and that’s going to become my new

[00:30:34] field.

[00:30:36] I could if I really wanted to.

[00:30:39] I needed to keep that field,

[00:30:40] the status field.

[00:30:41] I knew it was tied into other things.

[00:30:45] You could go and shut off all your

[00:30:46] automations.

[00:30:49] and edit that field if you want to

[00:30:50] be really safe.

[00:30:51] But what I typically do just as a

[00:30:53] best practice is if changing this is going

[00:30:56] to break everything,

[00:30:57] I create a new version of it and

[00:31:00] repoint all my dependencies to use my new

[00:31:02] field.

[00:31:05] So this is a very simple base.

[00:31:08] So there aren’t that many dependencies.

[00:31:10] You might have sixty eight dependencies.

[00:31:13] You might have two hundred and forty.

[00:31:15] Like it might be a lot of work,

[00:31:19] but it’s important to do slowly and with

[00:31:22] intention because you could depending on,

[00:31:24] you know, the scale of your operation,

[00:31:26] the scale of what you’re doing in your

[00:31:27] table.

[00:31:28] I’ve made every mistake in the book and

[00:31:30] you can so easily

[00:31:32] fire off hundreds of emails without even

[00:31:35] realizing it while you’re doing this.

[00:31:37] So just take it slow and like test

[00:31:40] it, maybe make a duplicate of the base,

[00:31:42] test it out and then do it in

[00:31:44] the real one.

[00:31:45] There’s a ton of different approaches

[00:31:47] here,

[00:31:48] but what I’m gonna- How did we survive

[00:31:51] without the shared dependency field?

[00:31:54] I think you just sort of winged it.

[00:31:56] I think you just sort of said,

[00:31:58] you emailed all your stakeholders and

[00:32:00] said, get ready.

[00:32:03] And then you broke a bunch of stuff

[00:32:05] and went back and fixed it later.

[00:32:07] It wasn’t there before like automation.

[00:32:10] Like we had automations and interfaces

[00:32:13] even before this.

[00:32:15] Most likely.

[00:32:16] And then my,

[00:32:18] where did it come in relation to

[00:32:21] bi-directional syncing?

[00:32:22] That’s really the,

[00:32:23] your hardest dependency to coddle,

[00:32:27] so to speak,

[00:32:28] just because it’s a whole other base you

[00:32:30] have to go to,

[00:32:30] to see that basis dependencies for any

[00:32:33] fields that are synced downstream.

[00:32:37] That, yes, I find.

[00:32:39] So that’s another thing is I really wanted

[00:32:41] to have a sync example.

[00:32:42] And if we come back to this another

[00:32:45] time,

[00:32:45] I will have a more full example with

[00:32:47] a synced table because that is a huge

[00:32:50] point that Kamille just made is you might

[00:32:53] have synced bases here at the top.

[00:32:55] They would show up right at the top

[00:32:56] anywhere that you’re syncing this table to

[00:32:59] or this view to that that field is

[00:33:01] included in.

[00:33:03] you must go to that base and then

[00:33:05] check the dependencies there of that field

[00:33:07] and make sure that there are none.

[00:33:10] And if there are, sync your new one,

[00:33:12] do everything,

[00:33:13] repeat the whole process of what I’m doing

[00:33:15] here in the sync table as well.

[00:33:19] So it can be quite tedious,

[00:33:22] but very important.

[00:33:24] So what I typically do is I start

[00:33:26] at the top of the list and go

[00:33:28] down,

[00:33:29] or I might start with fields

[00:33:31] depending on how many there are.

[00:33:32] I make my plan of attack.

[00:33:35] This is a pretty simple list.

[00:33:37] So we’ll just start from the top.

[00:33:39] Mark inactive when term date entered.

[00:33:41] I don’t need this automation anymore.

[00:33:43] This is the whole point of doing this

[00:33:44] is to remove this automation.

[00:33:46] So I don’t really care about it.

[00:33:47] What I typically do,

[00:33:48] my best practice in this situation though,

[00:33:51] is I put a little red X and

[00:33:55] I say deprecated.

[00:34:01] So I keep this around for a little

[00:34:03] bit and I know that I’ve looked at

[00:34:05] it.

[00:34:05] I don’t need it anymore.

[00:34:07] I’ve told myself I’m done with it.

[00:34:10] If it shows up in my dependencies,

[00:34:16] I’ll see, well,

[00:34:19] I will in a couple minutes.

[00:34:20] Maybe I’ll see the new name.

[00:34:23] It should say that.

[00:34:24] But then I can see right away, like,

[00:34:27] all right, that automation’s good.

[00:34:28] It’s not on.

[00:34:29] It’s got the red X.

[00:34:29] I’m done with it.

[00:34:30] I don’t care.

[00:34:31] But I do not want to delete it

[00:34:32] yet, just in case I want some history.

[00:34:35] Like, if I’m like, I don’t know,

[00:34:37] six months down the line, I’m like,

[00:34:39] want to be able to see something,

[00:34:41] I might keep it around.

[00:34:42] But depending on the automation,

[00:34:44] you might just delete it.

[00:34:45] Up to you.

[00:34:48] Then I’m going to go to my onboarding

[00:34:51] checklist and look at this.

[00:34:53] But let’s demo.

[00:34:55] What I want to do is actually demonstrate

[00:34:57] what will happen if I didn’t do this

[00:34:59] step, just to show you why it’s important.

[00:35:03] So let’s pretend this is my original

[00:35:10] status field.

[00:35:13] And on my onboarding checklist,

[00:35:15] that’s the one I’m looking at.

[00:35:24] And on my team members, let’s just say,

[00:35:26] I’m gonna take this,

[00:35:29] edit this original field,

[00:35:31] pretend this one doesn’t exist for a

[00:35:33] moment.

[00:35:36] Change it into a formula.

[00:35:39] Do my fun little thing.

[00:35:41] I’m gonna delete that,

[00:35:42] cause I want that muscle memory to sync

[00:35:45] in.

[00:35:47] We’ll do TBD.

[00:35:51] Active, inactive.

[00:35:55] I don’t even care about the colors right

[00:35:56] now because I’m going to delete this.

[00:35:57] I just want to demonstrate.

[00:35:59] So it’s going to tell me, hey,

[00:36:01] you’re looking this field up on that other

[00:36:04] table.

[00:36:07] Now that might not matter, right?

[00:36:09] Because I don’t know.

[00:36:10] It doesn’t show me what the dependencies

[00:36:11] are of that field on that table.

[00:36:15] Yeah, it’s not recursive.

[00:36:17] Exactly.

[00:36:19] So what I would typically do is I’d

[00:36:21] go look at it and be like, oh,

[00:36:23] I keep going to that table,

[00:36:24] it’s this one.

[00:36:25] These tables are in a weird order.

[00:36:28] Oh,

[00:36:28] this field is being used to filter a

[00:36:31] view.

[00:36:32] So that would be my red flag there.

[00:36:39] And then if I change it,

[00:36:46] this looks the way it should

[00:36:49] But now my filter is gone.

[00:36:52] I no longer have a filter on this

[00:36:53] table.

[00:36:54] It broke it.

[00:36:55] So that’s…

[00:36:58] And that is being synced down to some

[00:37:00] other base and…

[00:37:03] Yeah, exactly.

[00:37:03] Now you’ve released all the inactive

[00:37:05] records into whatever sync table is using

[00:37:08] this hypothetically.

[00:37:10] And now like emails are being sent and

[00:37:13] things are happening and you’re like,

[00:37:16] oh my God,

[00:37:16] you’re going to start getting phone calls.

[00:37:17] So that’s why it’s important to not do

[00:37:21] that.

[00:37:23] But let’s undo.

[00:37:25] Can I undo all the way?

[00:37:26] Let’s see.

[00:37:29] There we go.

[00:37:31] but that does not undo my filter of

[00:37:33] breaking.

[00:37:33] Yeah.

[00:37:33] Yeah.

[00:37:33] Now we will go here.

[00:37:40] I will say,

[00:37:41] I think when you duplicated the field,

[00:37:44] it didn’t immediately break the filter on

[00:37:47] onboarding checklist because duplicating a

[00:37:49] field keeps the underlying values of the

[00:37:54] IDs for the select choices.

[00:37:57] So when you updated the lookup to be

[00:37:59] status two,

[00:38:01] and it wasn’t a formula yet,

[00:38:03] the filter was still intact.

[00:38:05] That’s expected behavior.

[00:38:06] It’s the instant you switch it to

[00:38:08] something else.

[00:38:09] That’s when it breaks because it’s no

[00:38:11] longer the same select choices,

[00:38:13] even if they look identical.

[00:38:15] It’s the IDs underneath.

[00:38:17] Absolutely.

[00:38:19] Thank you so much, Kamille.

[00:38:20] That’s exactly one of the points I wanted

[00:38:22] to make is, let me delete.

[00:38:24] You made it earlier.

[00:38:25] I just, you made it earlier.

[00:38:26] I was just reminding the audience.

[00:38:29] No, thank you.

[00:38:30] I should have pointed it out as well.

[00:38:31] So we’re changing if the field type is

[00:38:35] exactly the same, right?

[00:38:36] Field type, field type, duplicated,

[00:38:38] very important, same IDs.

[00:38:42] Um,

[00:38:42] cause if you created a new single select

[00:38:44] field with different,

[00:38:46] like the same options,

[00:38:47] this would not work.

[00:38:48] Um,

[00:38:49] but now changing this to be status copy

[00:38:56] will not break my filter.

[00:39:00] Filter stays,

[00:39:01] but if I point it to a different

[00:39:03] field, different field, underlying values,

[00:39:07] it will break.

[00:39:09] Um,

[00:39:10] So how do I make it not,

[00:39:12] how do I avoid all that from happening?

[00:39:15] I forgot I didn’t flip that back.

[00:39:19] Not following my own rules here.

[00:39:24] We’ll delete this extra one.

[00:39:27] Okay, so I want to…

[00:39:29] delete this replace with that what i would

[00:39:32] do is on my onboarding checklist table i’m

[00:39:35] going to add a new version of the

[00:39:37] field because again if i repoint this one

[00:39:40] at my other at my new field it

[00:39:44] will break the filter still um so i’m

[00:39:47] gonna do and you could i guess there’s

[00:39:50] other ways of doing this depending on how

[00:39:52] many dependencies are on this status field

[00:39:56] you could like

[00:39:58] edit this filter temporarily and then

[00:40:00] change this field and then remove the

[00:40:03] filter.

[00:40:03] So depends on like how much work it’s

[00:40:06] gonna be to replace the field versus other

[00:40:09] options.

[00:40:09] That’s kind of what you’re constantly

[00:40:11] weighing in this scenario.

[00:40:15] So now I’m gonna say,

[00:40:17] this is my new status field.

[00:40:21] I’m gonna take this, flip it to,

[00:40:24] and actually,

[00:40:26] I’m not going to do this right now

[00:40:27] because this is a great thing to point

[00:40:29] out as well.

[00:40:30] This view, I don’t really care about.

[00:40:33] I’m not syncing this anywhere.

[00:40:35] I can tell because this is not pink

[00:40:37] and it doesn’t have my thing at the

[00:40:38] top saying there’s no automations using

[00:40:41] this view.

[00:40:43] You could just change this filter without

[00:40:45] worrying about things going crazy.

[00:40:50] Let me demo.

[00:40:51] If I change this filter now,

[00:40:52] see the second I pick that,

[00:40:55] all of my inactive records show up.

[00:40:57] If I don’t want that to happen,

[00:41:03] what I typically do to be really, really,

[00:41:05] really safe is I duplicate the view,

[00:41:09] change this filter,

[00:41:13] status has any of active,

[00:41:15] go to the original,

[00:41:17] and then this is a little

[00:41:19] known or little used, I think,

[00:41:21] feature that I use pretty often.

[00:41:23] If you click on the view and say

[00:41:26] copy another view’s configuration,

[00:41:28] side note, Airtable, we desperately,

[00:41:30] desperately need this on interfaces.

[00:41:33] Yeah.

[00:41:34] For the love of God.

[00:41:35] Yeah.

[00:41:39] I’m going to pick the copy and I’m

[00:41:40] going to take those filters and paste them

[00:41:43] onto this one.

[00:41:44] So that way…

[00:41:46] It just happens and I don’t end up

[00:41:48] with inactive coming and then leaving.

[00:41:50] So nothing crazy is going to happen that

[00:41:52] I don’t know about.

[00:41:53] Nice.

[00:41:54] Yeah, I never use that.

[00:41:56] That’s a good tip.

[00:41:58] I also use this,

[00:41:59] and I cannot stress enough that it is

[00:42:02] so helpful,

[00:42:04] not just for the exact walkthrough that

[00:42:08] we’re doing right now,

[00:42:09] but just in general.

[00:42:11] If you have a view that’s the basis

[00:42:13] of an automation or a basis of a

[00:42:17] sync view,

[00:42:19] you got to test that filter somewhere else

[00:42:21] first and then copy and paste.

[00:42:23] Like this example,

[00:42:24] we’re only filtering on one field.

[00:42:26] But imagine you have nested groups on

[00:42:29] nested groups and you want to do all

[00:42:32] of your testing somewhere else first

[00:42:34] before you commit it to the view that

[00:42:36] matters.

[00:42:38] Exactly.

[00:42:40] Exactly.

[00:42:41] Because, and there’s also, I love,

[00:42:44] I’m really a big, at first,

[00:42:46] I hated that the feature where they

[00:42:47] changed it to have the button to apply

[00:42:50] the filter changes on your view,

[00:42:53] which did not just show up because I

[00:42:54] only have twelve records here.

[00:42:58] But if I go into a different base

[00:42:59] that has more, let’s see, I guess, nope.

[00:43:12] Nope.

[00:43:12] All right.

[00:43:14] You know what I’m talking about though?

[00:43:15] The big blue apply button.

[00:43:17] Yeah.

[00:43:17] Right, right, right.

[00:43:20] If that is when

[00:43:24] You would think that anytime you have,

[00:43:26] you set the view up as a sync

[00:43:27] view, that it should switch to that apply,

[00:43:30] but it doesn’t always.

[00:43:33] When does that show?

[00:43:34] I think there’s some sort of record

[00:43:36] threshold, um,

[00:43:38] which to me should not be the trigger.

[00:43:41] I think it should be,

[00:43:41] if there’s any dependencies at all on the

[00:43:44] view, it should say,

[00:43:46] are you sure you’ll want to make that

[00:43:48] change rather than it being a certain

[00:43:50] number of, uh, records.

[00:43:53] Yeah.

[00:43:54] Exactly.

[00:43:55] Yeah.

[00:43:56] I used to really not like it because

[00:43:58] it was slowing me down.

[00:43:59] But now I miss it when I don’t

[00:44:00] see it.

[00:44:01] I’m like, okay, it really does help.

[00:44:03] Because if that button were there,

[00:44:05] you wouldn’t have to worry about doing the

[00:44:06] whole thing I just did.

[00:44:09] Although it is kind of good practice.

[00:44:11] Sometimes I will still do this so that

[00:44:14] I can see the number of records didn’t

[00:44:16] change.

[00:44:17] The records are still there when I make

[00:44:20] the actual filter update.

[00:44:23] the records that are on that view are

[00:44:25] not going to change.

[00:44:27] So you might want to test that out

[00:44:28] first.

[00:44:30] But now I have no more dependencies on

[00:44:33] my original status field.

[00:44:36] Now,

[00:44:36] if you know for a fact that you

[00:44:38] are not using any other third-party tools,

[00:44:41] you could stop here,

[00:44:42] you could delete the field,

[00:44:43] you could be done.

[00:44:45] If you are using another tool such as

[00:44:48] fill out Zapier, make etc,

[00:44:51] they might be looking at this field there.

[00:44:54] It might be using it and that’s going

[00:44:55] to be going off of the field ID

[00:44:57] in all likelihood, so you will.

[00:45:00] You could break things in other third

[00:45:02] party tools.

[00:45:04] Different platforms have different ways of

[00:45:06] dealing with this.

[00:45:07] Some are easier than others to search for

[00:45:09] whether or not you’re using that field.

[00:45:12] Zapier,

[00:45:13] you can download a JSON file of all

[00:45:15] of your Zaps.

[00:45:16] And that’s what I often do is I

[00:45:18] just search.

[00:45:18] I like go here, copy field URL.

[00:45:23] and get that field ID and then search

[00:45:27] for it in a JSON file of my

[00:45:29] SAPs.

[00:45:31] That’s one way to do it.

[00:45:32] I think there’s other tools that exist or

[00:45:34] there used to be one that was really

[00:45:36] cool.

[00:45:37] You could upload that JSON file and put

[00:45:39] it into a GUI interface for you.

[00:45:43] But there’s a lot of things that you

[00:45:45] should pay attention to beyond the

[00:45:47] Airtable base if you are using those

[00:45:50] third-party tools.

[00:45:52] Kavon at Airtable in San Francisco did a

[00:45:56] really awesome demo on how she approaches

[00:45:59] capturing those dependencies.

[00:46:02] I have not implemented it,

[00:46:03] but I often have thought of it because

[00:46:06] I’m like, if I wasn’t being so lazy,

[00:46:08] I would do what Kavon does.

[00:46:11] And what she does is she says, like,

[00:46:14] I don’t know,

[00:46:15] Zapier dependencies or whatever it might

[00:46:17] be.

[00:46:18] And she’s like, and…

[00:46:21] status, point of contact, email.

[00:46:24] Let’s say those two fields I’m using in

[00:46:26] Zapier and I might add to it.

[00:46:29] She gets way more fancy with it too,

[00:46:31] but this is the general idea.

[00:46:33] Come on,

[00:46:34] I’m sorry if I’m butchering your option

[00:46:36] here.

[00:46:37] But now if I right click on here,

[00:46:41] Well, it’s already on the screen.

[00:46:43] So this will show up and say Zapier

[00:46:45] dependencies.

[00:46:46] And so that’s my little cue to be

[00:46:47] like, I got to go to Zapier,

[00:46:49] do the same thing, flip everything around.

[00:46:52] So come on, kudos to you.

[00:46:53] I’ve done that.

[00:46:55] I’ve done that if you in the extension.

[00:46:59] If you have a script.

[00:47:01] And then the script in the configuration

[00:47:04] you can even specify a field,

[00:47:06] but that doesn’t show up in your

[00:47:07] dependencies.

[00:47:08] So I had to do this trick to

[00:47:10] make sure like it’s show that it’s being

[00:47:13] used in in the script.

[00:47:16] my variation for this was to use a

[00:47:18] last modified time or by field but that

[00:47:21] only lets you select editable fields so

[00:47:25] you wouldn’t be able to do the lookup

[00:47:26] like in this example so if you need

[00:47:30] this for um you know calculated fields

[00:47:36] formula all the way yeah yeah absolutely

[00:47:39] you just got to remember to update it

[00:47:42] keep it maintained every time we make a

[00:47:43] change come back here

[00:47:47] So that’s really helpful as well,

[00:47:49] but I’m going to delete that.

[00:47:51] So now I’m going to delete this field.

[00:47:53] I’m going to delete my status field.

[00:47:54] I’ve got my new status field on this

[00:47:56] table.

[00:47:57] I can call this table done and I’m

[00:47:59] going to go back here and right click

[00:48:03] show dependencies.

[00:48:06] And now I’m looking, I’m like, okay,

[00:48:09] that automation is deprecated.

[00:48:10] I don’t care about that calculation.

[00:48:12] That’s just my helper field to see whether

[00:48:14] these two things match or not.

[00:48:16] So I am good to go and I

[00:48:19] can delete this status field.

[00:48:25] It would then,

[00:48:29] then I’d be able to delete the test

[00:48:32] tube on my regular one.

[00:48:37] and call it a day.

[00:48:41] That’s a very simple or simple approach

[00:48:44] doing one field to another.

[00:48:45] I’ve got a whole bunch of other examples.

[00:48:49] One I will briefly touch on because we

[00:48:51] have not much time left is a little

[00:48:56] trick that I’ve figured out on the

[00:49:01] self-linking tables.

[00:49:02] Let’s see, where am I?

[00:49:10] No, I’ve used this many times.

[00:49:13] This one, OK.

[00:49:16] This is a copy of my wedding planner

[00:49:18] base.

[00:49:18] I haven’t, none of these are real people.

[00:49:21] I replaced them all with fake names.

[00:49:24] But this base was created in twenty twenty

[00:49:29] one,

[00:49:30] twenty twenty or twenty twenty one before

[00:49:32] we had the ability to link bidirectionally

[00:49:37] from one table.

[00:49:40] So before you could only,

[00:49:43] if you could still link a record to

[00:49:45] it’s the same table,

[00:49:47] like I could say link to guests from

[00:49:50] guests on the guest table,

[00:49:51] I want to link to another guest and

[00:49:53] that’s what this field is,

[00:49:55] but it only goes in one direction.

[00:49:58] So if I link Margie Murcott to Rika

[00:50:02] Ferolli,

[00:50:05] I don’t see that Rika is tied to

[00:50:08] Margie at all.

[00:50:09] Like if I look at Rika’s record,

[00:50:12] there’s no mention of Margie whatsoever.

[00:50:15] So that became a problem for many people

[00:50:19] in some use cases.

[00:50:21] You could have an automation that would,

[00:50:23] and I did in this space in my

[00:50:25] original one.

[00:50:28] Yeah.

[00:50:28] Link to partner.

[00:50:31] and it would just link the other one

[00:50:33] to itself.

[00:50:36] But I can get rid of that with

[00:50:38] our new feature,

[00:50:39] which is if you were to add this

[00:50:41] field today, link to the guest table.

[00:50:47] And it won’t show it on this view

[00:50:53] because I have things hidden,

[00:50:54] but it did also add the reciprocal of

[00:50:58] that linked field.

[00:51:00] So now if I link Margie to Rika,

[00:51:04] Rika is linked to Margie.

[00:51:08] In this scenario,

[00:51:09] the partner plus one scenario,

[00:51:12] I actually kind of like it all in

[00:51:14] the same field because I don’t want to

[00:51:18] see

[00:51:21] i’m getting on a tangent here but in

[00:51:23] this scenario i might not actually want to

[00:51:24] do this change that i’m about to do

[00:51:26] because i like having it all in the

[00:51:27] same field whereas if i look at margie’s

[00:51:31] record i don’t see rika’s name in this

[00:51:34] field the field and it’s like okay well

[00:51:39] which one how do you decide what the

[00:51:40] hierarchy is there like there is there

[00:51:42] really isn’t one um

[00:51:45] So decisions to make,

[00:51:47] but let’s say you have decided you

[00:51:49] absolutely do wanna make this field have

[00:51:52] the bi-directional reciprocal on the same

[00:51:54] table.

[00:51:56] I had a scenario where my client was

[00:51:59] using this to be like referred by, right?

[00:52:05] So this person referred this person.

[00:52:08] I wanna see all of the people that,

[00:52:11] they referred in the other field.

[00:52:14] So it does make sense where you end

[00:52:16] up with one field of the people that

[00:52:19] Who referred this person?

[00:52:20] Who has this person referred?

[00:52:22] You have two different fields,

[00:52:23] which makes more sense than this example.

[00:52:27] So apologies there.

[00:52:28] But if we wanna change this field and

[00:52:32] I want it to be this field,

[00:52:34] I don’t wanna create a new one.

[00:52:35] I wanna keep this field because I care

[00:52:37] about the history of it.

[00:52:38] In my record revision history,

[00:52:40] I wanna be able to look back and

[00:52:41] be like, oh, two years ago,

[00:52:43] somebody said this person referred that

[00:52:45] person, right?

[00:52:47] That might be important to you.

[00:52:49] So this is something you can do that’s

[00:52:51] like a little scary,

[00:52:52] but like it works if you do it.

[00:52:55] What I have,

[00:52:57] make sure I have my record ID.

[00:52:59] I don’t have a record ID on this

[00:53:00] table.

[00:53:01] That’s crazy.

[00:53:04] I’m gonna create a record ID for every

[00:53:06] guest.

[00:53:08] I’ve got every guest record ID on this

[00:53:10] table.

[00:53:11] Now I’m gonna add a lookup field and

[00:53:18] capture.

[00:53:20] the record ID of everybody in this field.

[00:53:24] So now I know Rika’s record ID is

[00:53:27] this five MP one.

[00:53:29] And if I look at Rika five MP

[00:53:32] now, next step,

[00:53:34] I want to take this and change it

[00:53:36] to single line text.

[00:53:37] Cause I want to freeze that value in

[00:53:41] a field.

[00:53:41] I don’t want it to change.

[00:53:44] Then I’m gonna take this and also change

[00:53:47] it to single line text.

[00:53:48] And this is the scariest part of it

[00:53:50] all.

[00:53:51] You wanna make sure that you don’t have

[00:53:52] any automations on that are looking at

[00:53:54] this field when you do this.

[00:53:55] That is a huge, huge, huge thing.

[00:53:58] Make sure that all of them are off.

[00:53:59] Do your Zapier thing,

[00:54:00] do your checks in your third party tools.

[00:54:03] But if you’re in the clear,

[00:54:05] don’t be scared to do this.

[00:54:08] You can do it.

[00:54:10] All of these fields,

[00:54:11] don’t even worry about them.

[00:54:13] Just don’t even worry,

[00:54:16] unless they are gonna trigger automations,

[00:54:18] unless they trigger automations,

[00:54:19] big asterisk.

[00:54:20] But if they don’t, don’t even worry,

[00:54:23] convert.

[00:54:25] Now I’m looking at the scariest thing

[00:54:26] ever.

[00:54:27] I’m like, oh God, what did I do?

[00:54:29] I’m gonna copy that,

[00:54:32] paste the record IDs over.

[00:54:34] And the reason for that is because once

[00:54:36] I change this back,

[00:54:36] if I didn’t do that step,

[00:54:38] if I have two Ricoh Ferrolis in my

[00:54:40] database,

[00:54:41] I don’t know which one it’s gonna pick.

[00:54:43] So I want to make sure it’s picking

[00:54:45] the same one it picked before,

[00:54:46] but it keeps it there.

[00:54:48] Now, last step,

[00:54:49] change it back to link to another record,

[00:54:52] link to the same table, hit save.

[00:54:58] Oh, I should have showed,

[00:54:59] didn’t show the revision history before,

[00:55:01] but revision history is intact.

[00:55:04] Oh, I don’t, yeah,

[00:55:06] I can actually do that here.

[00:55:08] Margie Mirko, yeah.

[00:55:10] See, five minutes ago,

[00:55:11] so before I changed the field type,

[00:55:13] It shows I put in Rika as her

[00:55:15] plus one,

[00:55:16] shows me actually changing all the field

[00:55:18] stuff and then putting Rika back.

[00:55:20] But if I had things edits in that

[00:55:22] prior to that, this first one here,

[00:55:25] I’d still see them.

[00:55:26] I wouldn’t have lost them with this

[00:55:28] change.

[00:55:29] And if I created a new version of

[00:55:31] it,

[00:55:31] I would have lost all of that history

[00:55:33] because I’d be deleting my original field.

[00:55:37] Um,

[00:55:37] so that I did some after some testing

[00:55:40] and I’ve,

[00:55:41] I’ve applied it to a few different bases

[00:55:43] and it has worked really well.

[00:55:44] If I go back to the demo.

[00:55:47] Yes.

[00:55:48] So if you delete a field,

[00:55:50] it deletes the revision history of that

[00:55:52] field in your history.

[00:55:56] I believe it does.

[00:55:58] Hmm.

[00:55:58] I didn’t know that.

[00:55:59] That’s interesting.

[00:56:02] Mm-hmm.

[00:56:05] It’s, it’s really odd.

[00:56:08] Um,

[00:56:08] I would prefer it to be there still.

[00:56:12] Yeah.

[00:56:14] Like if I delete this field, it’s still,

[00:56:24] it’s still there.

[00:56:25] No, it’s not.

[00:56:26] That’s a different field.

[00:56:27] Yeah.

[00:56:30] But actually, maybe that wasn’t an edit.

[00:56:32] That field didn’t actually technically

[00:56:33] have an edit associated with it.

[00:56:35] Let’s add an edit.

[00:56:40] And I got to wait a few because

[00:56:41] that too, I found this really frustrating.

[00:56:44] Like sometimes just, okay, cool.

[00:56:46] It captured it.

[00:56:49] Now, if I don’t have to.

[00:56:57] Yeah.

[00:56:57] Wow.

[00:57:00] Very interesting.

[00:57:06] All the time, everything is so scary.

[00:57:08] I find that the longer I do this

[00:57:11] and the more complex all the builds are

[00:57:13] getting,

[00:57:13] the longer it takes me to make any

[00:57:15] little change.

[00:57:17] it’s it’s important to do it right to

[00:57:20] slow down and be aware of like what

[00:57:23] your cascading ripple effect is going to

[00:57:24] be that’s why we call things breaking

[00:57:27] changes like they are important to be

[00:57:30] aware of when you’re about to do one

[00:57:33] yeah i could go on and on but

[00:57:37] you know we’re at time here

[00:57:40] Very cool.

[00:57:42] These are great insights.

[00:57:43] It’s always good just to take the time

[00:57:45] and go through this and lots of valuable

[00:57:47] best practices.

[00:57:49] If you’ve got more that we missed,

[00:57:51] let us know.

[00:57:52] We want to learn from everyone and

[00:57:54] everybody improves from sharing best

[00:57:57] practices.

[00:57:57] So thank you, Ali.

[00:57:59] Next week we’ll continue.

[00:58:01] I think we’ll do a deep dive into

[00:58:03] sandboxes.

[00:58:06] Learn more about that.

[00:58:07] Some best practices around there.

[00:58:08] Yep.

[00:58:12] So that’s gonna be good.

[00:58:13] So come back,

[00:58:14] join us for next week’s episode and

[00:58:16] everybody have a good week.

[00:58:17] We’ll see you next time.