Jul 14, 2022 06:14 AM
Hi everybody!
I’m new in Airtable and I really enjoy this tool. I watched some tutorials and read about Airtables functions. I tried things out, and what should I say, it works very well! Now I try to organize my company’s tasks but I don’t get a quite clear idea on how to do it. My problem is the amount of different tasks and things I need to add. I guess it is not very complicated for you guys, therefore I would appreciate some ideas and insights on how to structure my Airtable.
I’ll try to explain as clear as possible all the tasks and needs I have.
We are a content and marketing agency. That means we have two teams - marketing and content with different projects.
What I have already:
The problem comes with the table of the projects:
Let’s talk about the content part. We create blog posts, whitepapers etc. for different clients. Some are occurring regularly and some just once. I need to create a content calendar where I see when we have scheduled articles, who is doing it, what topic, who is the writer - I managed to do all this. The problem is now that my data is in a huge list and I don’t have a good overview. I would like that I can separate them by client and month without creating 20 new tables. I want a list with all projects from the same month, but also from one client. I know there is a filter function, but I feel that is not good enough. I want to schedule my content for the rest of the year and I don’t know how to really organize the amount of information I have without losing the overview. To every article there is a lot of data and also billing information. I need to find a good way how to organize all of it.
Do you have a good idea how I could structure my Airtable in the right way?
Thanks for your help and time.
Jul 26, 2022 10:54 AM
When exploring this part of the base, I wanted to find a way to build something that would highlight some of the dynamic ways you can implement an invoicing and billing system.
I’ll reiterate that I’m taking a few intentional deviations from your requirements for the sake of exploration.
I had to sit on this for a few hours.
The most straightforward thought I had was to simply use a pivot chart to allow us to break down that information.
As a side note to this question:
You only need a single date field to implement these:
One of the coolest formula functions within Airtable is the DATETIME_FORMAT
function.
It allows you to take a single Date/Time field, and format it into an almost infinite number of permutations.
You can find a list of the possible formatting tools here
If you look at the previous image, you’ll see the two formula fields.
Both of those fields are referencing the Due Date
field.
Here’s the formula for the ‘Project Quarter’ field:
IF(
{Due Date},
DATETIME_FORMAT(
{Due Date},
'YYYY'
) & " - " &
'Q' & DATETIME_FORMAT(
{Due Date},
'Q'
)
)
And here’s the formula for the Calendar Tag
field:
IF(
{Due Date},
DATETIME_FORMAT(
{Due Date},
"MMM YY'"
) &
' - Q'
&
DATETIME_FORMAT(
{Due Date},
'Q'
)
)
If you open the above link to the Airtable DATETIME_FORMAT specifiers, you’ll see that we can actually mix and match the specifiers to build custom formats. It’s hard to properly explain, so here’s a comparison:
MMM YY'
→ Mar 21'
- Q'
→ - Q1'
YYYY
→ 2021
So if we have a date of 3/1/21, then when we format that into MMM YY'
, then we will get
Mar 21'
.
Per the specifiers, if we format it into LL
, we will get March 1, 2021
.
Again, it’s pretty much a virtually unlimited number of permutations.
I recommend playing around with it.
Playing around with it will allow you to group records by any sort of date format you’d like.
You will notice in the screenshot above that the groups aren’t chronologically in order.
It’s a quirky behavior in how Airtable handles sorting and grouping. If you do actually want them to be properly grouped and sorted, there’s a small workaround if you’re curious to see it.
At this point, I was super curious to push the boundaries on solutions I’ve built before.
Remember this from the first post?
We can now reap the benefits of setting ourselves up in our design.
Before I show you where it comes together, I need to quickly stop at our Team Members table because you pointed out that:
This table was a lot of fun to explore.
As you might be able to guess, this table contains records for each team member that you might have.
You’ll find any information about a given team member here, ranging from their position/title, billing rate, email address, primary phone number, address, etc.
Additionally, you can also pass in their preferred profile picture. Doing this allows you to do some really cool things when you start looking at page templates for invoices or automations.
When you start organizing your staff with things like their position/title, you can even easily identify and handle your contractors/freelance team members.
Here’s a quick example of that.
Using a quick formula field, I can summarize freelance/contract information allowing for quick and insightful glances at the contract and work history of a given individual.
This also allows you to play with implementing a company/team directory.
As per usual, all data you see is test data generated for this purpose.
Now that we’ve done an initial glance at what’s here, let’s take a look at some of the nuances that build the overall workflow.
Let’s say you need to identify the writer of a given project.
While a project might have multiple people working on it, there is a primary writer that takes ownership of the actual content.
For example, I can have a project with an editor, designer, and planner. Those are in addition to my assigned writer.
Since the writer serves a critical role in the project, we might want to isolate them as being the writer.
While this makes for slightly better sorting and organization, it also lets you go in-depth with how your billing and invoicing behave.
We’ll touch back on that later.
Now that we’ve filled in the billing rate for each team member, we can use that information to build our billing and invoicing.
In my example, I have them billing per project.
There will be slight permutations in how things work if you bill by a different metric, such as on a time-based method.
We have two sources if you sit back and think about where all the information comes from regarding rates and prices.
Those two pieces come together at a central point. When working with data design, you might hear these referred to as junctions.
Just because we have information pumping into a single point does not mean that we can just call it a day and hope that it all works out fine.
We have to synthesize that information to properly support our workflows.
We’re now at the point where it comes full circle.
Remember that rollups let us take a bunch of data from other sources and transform or summarize it in a different location.
In this case, we want to work with the billing/service rates from both our Service and Team Members table.
To start, I’m going to create a rollup from the Service table.
This will give us the rate as shown in the service table.
Now we need to handle the billing for the team members that are assigned to the project.
Remember this?
Since the writer serves a critical role in the project, we might want to isolate them as being the writer.
It will come in handy now.
Look carefully, and you’ll see that I actually have two linked record fields to the Team Members table.
The difference in the fields is that the Writer linked record field only allows us to link specifically our writers in this field.
On the other hand, the Team Members field allows you to assign anyone who is not a writer.
Here’s the thinking behind that choice:
There are situations that I’ve worked with in the past where the billing of a writer or principal staff member needs to be handled differently or called out differently from the rest of the other staff on a project.
This also allows you to clearly identify how much of the overall invoice amount is paid towards the writer or staff member that owned that particular project delivery.
I apologize for the image compression.
Here’s a crude explanation of what you’re seeing.
There could be a ton of different things that might be added to the invoice amount.
I’ve enjoyed using a simple note field to note down additional things.
When you take all of this work that we’ve done, you can do things like fuel some dope document generation without having to do any duplicate data entry.
You may have noticed that I have a single-select field that shows the status of the invoice.
Let’s say that when you get a new project, the client needs to pay the 25% deposit fee of the flat rate service fee.
The remaining invoice amount will be due when the project is completed/published.
To show this off, I will create a new project record and show you the invoice/billing workflow.
Here’s my new project record. I have added my client, my writer, and my team members.
Now, since I’ve added my team and I’ve added the service that this project is based on, all my billing information is present and has automatically filled in.
Since the project is new and is in planning, the only balance that’s due right now is the deposit amount.
Here’s the Balance field:
Balance: $171.25
Total Paid: $0
Here’s the Billing Breakdown field:
Service Rate: $685
Staff Rate: $581
Invoiced Amount: $0.00
Here’s the Deposit Amount field:
Deposit Due: $171.25
Here’s the Publishing Amount field:
Due At Completion: $513.75
Okay great! We have our billing information!
Now that we have our invoice calculations, we can run our deposit invoice!
I’ll go ahead and input the amount that I want to run the invoice for. From there, I can click my Invoice button.
Airtable will then fill in all the record data into the template I created.
I’ll go ahead and add this invoice to the record for record keeping.
You can then send the invoice to your client or client contact.
If you’d like, I can show you how to build an automation that sends out your invoices to your contact for you.
So what happens when your client pays the invoice?
We need a way to record our payments and update our billing information.
This is where we see the new Payments table!
Each record in this table is for each individual payment made by a client.
We can designate payments that are being processed, processed, whether they are for deposits or for completed projects, etc.
We’ll imagine that our client has paid the invoice we sent them.
So we will create a new payment record and fill in the information.
Since we link our project to our payment, our balance is now $0.00
You can also see that our Balance field now shows a zero balance and that the deposit has been paid.
What happens when the project is completed or published?
Now that our invoice is due, we can update our invoice amount to the final billing amount.
I’m going to enter in a ballpark-ish number for our final invoice amount that takes into account all of our staff billing rates and service balance.
We can then run our final invoice and issue that to our client.
And when they pay, you can just record it as we did before!
A quick note on reporting:
A small side-exploration I did was create a table that breaks down your months/years/quarters.
It allows you to see which clients did business with you that month, the number of projects, and the total revenue for that time period.
I didn’t explore it much, but we can explore it a bit more if you want.
Jul 27, 2022 04:50 AM
woooow, this is amazing.
just going through everything. will be back on this in a bit.