Skip to main content

How to create a social media calendar for your small business



In a small business, the task of posting on social media typically falls to the owner. It can be fun at first, and you might have some professional shots of your products or services to upload. However, as the business takes off, content creation can feel like a chore—or worse, drop off completely. 

According to Lara Betthauser, social media manager for the Yelp and Yelp for Business social media handles, this is a big missed opportunity. Social media is your voice, your brand, and your business’s personality in a digital medium. You can’t be face-to-face with every customer, every day, but your online presence can. 

So how can you turn this chore into a creative and fulfilling extension of your brand? Lara, who recently launched the Yelp for Business Instagram page, suggests developing a social media content calendar—an outline of your upcoming posts, organized by date. “Just like everything else, planning is the roadmap for the future. If you don’t have the planning, it can make it a really daunting task,” she said. 

Below, Lara shares some tips and tricks of her own for scheduling social media content. Whether you’re launching your profile for the first time or revamping an older presence, a solid game plan can help alleviate some of the stress of posting—and bring back the fun.

1. Set your content calendar cadence 

You can create a content calendar in any format that works for you—Lara recommends using Later, Buffer, or one of these other scheduling tools, depending on your business needs. Get in the habit of updating the calendar regularly, at whatever cadence you choose. 

“Even if it’s a week or two weeks at a time, I really suggest businesses sit down, see what content they can get out so that they can focus on other things during the week,” Lara said. “Obviously social media is important, but if you’re not thinking about it, it’s one of those things that’s going to get easily written off the list.” 

Document your ideas, the timing, and and the channels you plan to distribute them on—say, a “behind-the-scenes” Instagram Reel of the sauce and condiment prep on Monday—so you can give yourself or your team realistic deadlines. 

However, understand that plans change, things happen, and events will interrupt your scheduled programming. Planning ahead will give you the flexibility to adjust. “Things are always going to come up,” Lara said. “But at least you have content that you’re pushing off into the next month—always having backup content.”

2. Plan for holidays and seasons

It might seem daunting to fill a month with original content ideas, but you don’t need to start from scratch. According to Lara, your own calendar can serve as inspiration: What national days or cultural months are coming up? Are you celebrating any anniversaries or events? If a holiday is approaching, are you altering your business hours or having a sale?

While holidays make good pegs for content, make sure you highlight occasions that are relevant to your business and audience. For example, if you run an apothecary and gift shop, it wouldn’t make sense for you to create content around National Burger Day, but you would celebrate the summer solstice. 

“You don’t have to say there’s a ‘national whatever day’ every day to help [fill out] your content calendar, but it can definitely take some pressure off to schedule things more in advance,” Lara said. 

And if you do have an event coming up, consider highlighting it in a video or post. Even if all of your followers won’t be able to attend, they want to know what you’re up to and how you’re engaging with your community—from farmer’s market pop-ups to Yelp Elite events.

Pro tip: Use online calendars like this one to research upcoming national days, cultural months, and more. 

3. Schedule evergreen content 

Once you’ve filled out your calendar with time-sensitive content, you’ll likely notice some gaps. That’s where you schedule your evergreen content—content that is not tied to a specific date or time of year, so it always remains relevant. This type of content is also hugely valuable because you can re-run it multiple times with different angles and messaging. 

According to Lara, behind-the-scenes clips are a great starter idea for evergreen content. “Since you are talking to people online, some of your followers may unfortunately never visit your business,” she said. “They don’t know what the inside of your business looks like. They don’t know what your storefront looks like. They don’t know all the fun things that you have going on or the artwork that you have on the wall.” 

Those visuals are all possibilities for easy, quick evergreen content—just take out your phone on a slow day and film. Other successful formats include:

  • A day in the life: Paint a picture of your day as a business owner. Stitch together short clips of you opening the business, grabbing your coffee, and preparing products for the morning rush. For example, if you run a bakery, show the team taking your croissants out of the oven. 
  • Meet the team: If you have an employee of the month—or any employee who’s comfortable on camera—make them the talent. What’s their favorite menu item? How did they develop their unique skills? Have them share with your followers in a quick, forward-facing video.

Pro tip: Lara uses the free app InShot to add transitions, music, or text overlay to video clips. For more advice on tools, check out these recommendations from Anne Faire, Yelp’s San Diego community manager.

4. Evaluate your performance 

At the end of your scheduled posting period, whether it’s two weeks or a month, take some time to evaluate your content’s performance. It’s not just about how many followers you have—for a small business, an engaged audience is often more valuable than a large one. 

“Did anybody comment? Did anybody share it with someone? Did anybody save it to their profile, especially on Instagram? You want to look to see what’s performing well and try to put themes together to see how you can incorporate that moving forward,” Lara said. 

And don’t be hard on yourself if a post didn’t go as planned; this exercise is simply to help discern what you should do more of and what isn’t worth your time.

Lara also suggests checking out the profiles of other like-minded brands and observing what works well for them. “Find some other people—maybe not competitors—but other people in your market that you could look at to see what they’re sharing,” she said. “There are great channels out there, especially on Instagram that you can start to follow to get different ideas… Watch what they’re doing and see how you can replicate and add your own spin.”

Lara’s Instagram recommendations:

5. Engage, reshare, comment 

Content creation doesn’t stop when your videos are posted. As you look through your comments and tags, set aside some time to respond, Lara said: “Once you have the content flowing, be sure to stay engaged and in touch with your audience. Take five, 10 minutes a day to see what you’re tagged in on Instagram. Engage. Reshare. Comment.”

You also have another content mine at your fingertips: Yelp reviews. Engaging with reviews is not only beneficial for your reputation—it can also fuel your future content. Brainstorm ways to repurpose your reviewer’s feedback, and in turn, make them even more invested in your content. (As a general rule, ask before you share a customer’s reviews on social media or put it into a video.) 

Curious about how to turn Yelp reviews into engaging content? Lara suggests tapping into another great resource: your employees. “If the review talked about somebody specific, do a ‘Yelp reviews reading’ and then pan over to the employee who the review was talking about and ask them how they feel—or just have a spotlight on them and have some stars rolling around,” she said. “It’s a great way to be able to shout out your employees and also show your potential customers what experience they could be getting.”

Interview by Emily Washcovick and editorial contributions from Holly Hanchey


These lessons come from an episode of Behind the Review, Yelp & Entrepreneur Media’s weekly podcast. Listen below to hear the conversation with Emily and Lara, or visit the episode page to read more, subscribe to the show, and explore other episodes.

Did you find this post valuable?

Click on a star to rate it.

Since you found this post valuable...

Follow us on social media for more great business resources!

We're sorry you didn't find this post valuable.

How could we improve it?

The information above is provided for educational and informational purposes only. It is not intended to be a substitute for professional advice and may not be suitable for your circumstances. Unless stated otherwise, references to third-party links, services, or products do not constitute endorsement by Yelp.

Business resources, delivered to your inbox

Get the latest blog content, info on virtual events, and the occasional freebie.

  • This field is for validation purposes and should be left unchanged.

By continuing, you agree to Yelp’s Terms of Service and acknowledge Yelp’s Privacy Policy.

[gravityform id="4" title="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/businesses/behind-the-review-how-to-create-a-social-media-calendar-for-your-small-business/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Email</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>
[gravityform id="4" title="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/businesses/behind-the-review-how-to-create-a-social-media-calendar-for-your-small-business/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Phone</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>