Atlantic Business Technologies, Inc.

Category: Development

Here, you’ll find insights on programming languages, frameworks, and techniques that shape the web and software landscape. Whether you’re a developer looking to refine your skills or simply curious about how things work behind the scenes, this space offers practical knowledge and thoughtful perspectives.

  • Building a Website is like Building a House: An Analogy to Help Custom Web Development Make Sense

    Building a Website is like Building a House: An Analogy to Help Custom Web Development Make Sense

    We use many metaphors (or analogies) when trying to describe what goes into custom web development. Building a website or web application is technical, complex, and sometimes tricky. Metaphors like “building a house” are helpful in aligning expectations from sales to deployment to ongoing maintenance – but they’re never perfect.

    This series will cover some of the main metaphors we use, both internally and with clients. I’ll describe some of the major and minor points that correlate – but also some of the nuances that aren’t the same. You can always jump to the other articles in the series, which compares website maintenance with owning a vehicle and the experience with a development agency to fine dining.

    We’re Talking About Building a House, Not Buying 

    Building a house is probably the most common analogy used when describing what we do. And we don’t mean buying a house that already exists; we mean building one from scratch. Imagine all the planning and decisions which you (as the eventual homeowner) would need to provide to others so you one day take out your shiny key, unlock the front door, and step into your perfect living space.

    We heavily leverage the five phases of software development with custom web development, and I’m mostly going to reference the discovery, design, and development phases.

    Discovery, or Why Do You Even Want a House?

    You may have already thought about blueprints as part of the analogy of building a house. Let me stop you though – we’ll get there soon.

    This is the house you want, you’ve always dreamed of, made for you – you’re not picking from a few pre-existing models. How would you feel if you hired a builder, and a week later they brought you blueprints only knowing you want four bedrooms? Wouldn’t you expect to spend some time explaining as many details as you can? Wouldn’t you expect the builder to ask you questions you didn’t know you needed to answer?

    This is discovery. We (as the builder in this scenario) want to know as much as we can because we want you to be thrilled with your dream home (er, website) and be proud that we built it. We want to make informed choices as we move into design.

    In the sales process, you’ve told us roughly how many rooms, a square footage range, desired location, and budget. That’s great, but how do you want to use your house? Do you have a family, and if so, how big is it? Do you want to entertain? Maybe you and your partner have differing wants and goals. These are analogous to the questions we ask during Stakeholder Interviews. We want to know from the people who are most vested in the project what would mean success to them.

    Let’s talk about your current house. What do you like, what don’t you like? We might use public records or have a house inspector visit to provide us more detail. This correlates to our Technical Audit, where we can review your current website, crawl public web pages, and/or have a developer or architect meet with you. You might invite us to walk through your house room by room, show us where you spend most of your time, and describe what you like and don’t like. This correlates to our Contextual Interview, where we can utilize screen sharing to watch a user use the website and ask questions throughout.

    As we start understanding your goals, likes, and dislikes, we’re going to start defining a list of home features. This may grow and change as we continue to plan and build, but our designer and our architect will need this list to eventually determine all the details for your website. This is our Requirements Matrix. It’s not deep in details, but should cover the main points of the custom web development. For example, this list may indicate you want a two car garage but doesn’t indicate details like dimensions or flooring materials.

    Design – or Unveiling the Blueprints

    You’re ready to stop talking about your new house – you want to see something! This planning period, design, has the most obvious overlap between home building and custom web development. Hell, we share role names like designer and architect, and that’s not just coincidence. What may surprise you is what those two roles perform in these scenarios don’t match up exactly between home and website building.

    You’ve seen it in film and tv plenty of times. An architect pulls a giant roll of paper from a large case of them. She rolls out a blue and white graphic that’s a few feet across in both width and height. But this time? It’s your house – the open living room with a few columns, a master bathroom with multiple windows to let in light. There are details of specific widths and general drawings for stairs, counters, and toilets. We commonly correlate this to our Wireframes. There’s no color, no ambiance – but you can now start to picture the result and you’re getting something tangible from the builder. But in our case, it’s not the architect that made these – it’s the UI designer.

    What else does the designer do? The main thing you’d expect – the visual representation of your final home. The mockups. An artist’s rendering of what a photo will pretty much look like when it’s built.

    But wait, what about the architect? Remember when she pulled the blueprint from a case? She has a number of other large documents that you might not ever see.

    There are designs on the foundation of the house. This includes the physical foundation but also information on the land and details of the physical material expected in the build. This is akin to our Architecture Diagram, which spells out what hosting platform and services that will be used. It is commonly created by IT engineers conferring with an application architect or senior developer.

    There are designs of all the pipes, wires, and anything that spans your property edges to the city or other properties. This analogy gets a little more vague, but might be attributed to any Integration Specifications if the website needs to communicate with other cloud services.

    A Few Analogies in Custom Web Development

    Once ground is broken and building begins on your house, there’s a lot of waiting. This is, unfortunately, very common in the custom web development space as well. You’ll be in contact with your project manager (same role name for us), and you might get occasional questions from our foreman (lead developer). We’re also orchestrating with the building crew (web development team), inspectors (quality assurance, or QA), and any others who will be necessary to successfully complete your project.

    We could dive even deeper in the metaphor – how architecting and writing the code can mimic physical house structure… but that’s a wholly different article!

    But not everything about building a house matches custom web development!

    There’s a huge assumption being made when we correlate custom web development and building a house. That assumption is: you want to plan, estimate, build, and buy a completed house. In software development, that’s not the only path you can take.

    You can use Agile Development as a methodology, which (very, very roughly) means building small pieces of your website at a time. It’s not like building one room of your house, then you move in, and then you build more rooms one at a time. That’s close, but it’s more like planning, designing, and constructing your kitchen counter, then doing the same for your cabinets, and floor; eventually, you’ll have a whole room and can keep going on the next. It honestly doesn’t fit the home building analogy at all.

    Sign-offs, Implicit Acceptance, and Changing Requirements

    In all phases of custom web development, we want and need your feedback! The last thing we want is for you to show up at your new house and have it look like we planned, but deep down you don’t like it… We ask for feedback, sometimes actual sign-offs, at points in the process such as at the end of a phase. There’s also “implicit acceptance” which means if we’ve been positively working with you through the planning and never received formal acceptance or rejection, we’ll continue to make progress as if it’s accepted. This is to protect all of us.

    The foreman brings you on site to see the house halfway through the building process. You walk into the half-kitchen, and… oof. You saw the plans for the island, but now that you see it in person? It’s… not what you hoped. Is it your fault? Nope. Did the designer or builder do anything wrong? Nope. Can it be changed? Yes, but we don’t know how easily.

    This is a great same-but-different scenario with software development. Change is inevitable, so it’s fine – just know changing plans in the middle of the initial build might be tricky! If you’ve watched any HGTV shows, you may have seen that an update may need a new design or might be changed on the fly. There’s just a cost of time, and sometimes dollars.

    Next Up

    I hope this article, and the others in the series, help to provide you with better context in your next custom web development or web application project. However, website projects don’t end at launch. Next in the series will be more focused on the owning / maintenance of your site.

     How Building a Custom Website Is (and Isn’t) like… Owning a Car

  • Deploying a .NET Core API to AWS Lambda & API Gateway using Bitbucket

    Deploying a .NET Core API to AWS Lambda & API Gateway using Bitbucket

    After a transition to Bitbucket for our repository hosting last year, we’ve been setting up more and more CI/CD using Bitbucket Pipelines. I recently converted a .NET Core API project that was deploying to an auto-scaling group of EC2s into a project that could be deployed in AWS Lambda behind API Gateway using Bitbucket. The web project that consumes this API is written in Angular.

    As a shop that leverages automated deployments in multiple environments, I found documentation on the web to be in short supply other than very basic “deploy using VS Studio” articles.

    As part of updating the API project to Lambda, I did make my LambdaEntryPoint reference APIGatewayHttpApiV2ProxyFunction and the serverless template event of type HttpApi. A guide to these updates can found here: One Month Update to .NET Core 3.1 Lambda

    In this post, I provide some snippets of YAML code which I found out in the world that didn’t work, and also what ultimately did.

    Jump to What Worked

    What Didn’t Work

    aws-sam-deploy

    caches:
      - dotnetcore
    steps:
      - export PROJECT_NAME=this-dotnet-project
      - dotnet restore
      - dotnet build $PROJECT_NAME
      - pipe: atlassian/aws-sam-deploy:1.5.0

    When trying to use the aws-sam-deploy pipe, I wasn’t able to leverage enough options or get the API to run the .NET code successfully. The API Gateway endpoint was running and hitting Lambda, but I was getting system errors I just couldn’t resolve.

    Using project appsettings files

    Since appsettings.json files contains secrets, we don’t check them into the repo. At some point I was receiving these errors, and I realized that the appsettings files weren’t getting deployed correctly.

    run_dotnet(dotnet_path, &args) failed
    
    Could not find the required 'this-dotnet-project.deps.json'. This file should be present at the root of the deployment package.: LambdaException

    We ended up injecting the appsettings content using the AWS Parameter Store with aws ssm get-parameter.

    dotnet publish, zip, and aws-lambda-deploy

    - apt-get update && apt-get install --yes zip
    - dotnet restore
    - dotnet publish ${API_PROJECT_NAME} --output "./publish"  --framework "netcoreapp3.1" /p:GenerateRuntimeConfigurationFiles=true --runtime linux-x64 --self-contained false
    - curl -o /bin/jp -L https://github.com/jmespath/jp/releases/download/0.1.3/jp-linux-amd64 && chmod a+x /bin/jp
    - aws ssm get-parameter --name "/this-project/api/dev/appsettings" --with-decryption --region us-east-1 | /bin/jp -u "Parameter.Value" | base64 -d > ./publish/appsettings.json
    - zip -r -j package.zip publish/*         
    - pipe: atlassian/aws-lambda-deploy:1.5.0
      variables:
         AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
         AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
         AWS_DEFAULT_REGION: ${AWS_REGION}
         FUNCTION_NAME: "this-dotnet-project-AspNetCoreFunction-LZj5pbvV0GRT"
         COMMAND: "update"
         ZIP_FILE: "$BITBUCKET_CLONE_DIR/package.zip"

    We have some single Lambda functions (not behind API Gateway) that use this method for deploying. It works great. I tried using this method pushing to a function that was built with a stack published via VS Studio. No luck. It’s possible there was a problem with the stack that was built, but I think this package wasn’t exactly right.

    What Works

    The following is the pipeline for a single branch, our develop branch. I haven’t yet refactored using template steps, but this is easier to read through for this article anyway.

    I have scrubbed the contents of this YAML, but the repo contains:

    • Root (.sln file)
      • .Net Core API project directory (named this-dotnet-project here)
      • Angular web project directory (named this-web-project here)
    pipelines:  
      branches:
        develop:
          - step:
              name: API (.Net Core) Build & Deploy 
              image: mcr.microsoft.com/dotnet/core/sdk:3.1
              deployment: Develop
              script:
              - apt-get update && apt-get install -y zip && apt-get install -y awscli
              - dotnet tool install -g Amazon.Lambda.Tools
              - export PATH="$PATH:/root/.dotnet/tools"
              - curl -o /bin/jp -L https://github.com/jmespath/jp/releases/download/0.1.3/jp-linux-amd64 && chmod a+x /bin/jp
              - aws ssm get-parameter --name "/this-project/api/dev/appsettings" --with-decryption --region us-east-1 | /bin/jp -u "Parameter.Value" | base64 -d > ./this-dotnet-project/appsettings.json
              - cd this-dotnet-project/
              - dotnet lambda deploy-serverless --aws-access-key-id ${AWS_ACCESS_KEY_ID} --aws-secret-key ${AWS_SECRET_ACCESS_KEY} --region ${AWS_REGION} --configuration "Development" --framework "netcoreapp3.1" --runtime linux-x64 --s3-bucket $API_S3_BUCKET --stack-name $API_STACK_NAME --stack-wait true
          - step:
              name: Web (Angular) Build
              image: atlassian/default-image:2
              caches:
              - node
              script:
    	      - cd this-web-project #The angular project is currently in a subfolder in the same repo
              - nvm install 12
              - nvm use 12
              - npm install @angular/cli
              - npm run build:dev
              artifacts: # defining the artifacts to be passed to each future step.
              - dist/**
          - step:
              name: Web (Angular) Deploy
              script:
              - pipe: atlassian/aws-s3-deploy:0.5.0
                variables:
                  AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} 
                  AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
                  AWS_DEFAULT_REGION: ${AWS_REGION}
                  S3_BUCKET: ${WEB_S3_BUCKET_DEV}
                  LOCAL_PATH: "this-web-project/dist/this-project-output-path/"

    apt-get install and dotnet tool install

    Items that were quickly apparent as missing before adding them, more of a “duh” leaving them out when trying so many things.

    dotnet lambda deploy-serverless

    This was the big command that mostly got things working. I finally found this is effectively what’s happening when you deploy the API project from VS Studio.

    –stack-wait true

    In Bitbucket, without this, the build shows as successful when the stack build is kicked off. By adding this flag, bitbucket will wait for the full build or update before continuing.

  • How are you leveraging your data?

    How are you leveraging your data?

    As we leverage more tools and create more sophisticated digital engagements/experiences, we have more and more data about our customers available. With customer experience data alone, the average organization has over two dozen potential technology applications and data sources to leverage customer data (1) These include multiple social media streams, CRM platforms, marketing automation, PPC advertising, Point of Sale/eCommerce, survey tools, email marketing tools, and the list goes on. 

    There is so much we can do with data, but many organizations, managers, and executives feel like data exercises are frustrating and time-consuming. How can all this data be useful if we don’t have ways to connect, view, measure, and act on it?  

    While technological advances may have gotten us to this issue of data overload, technology is also the solution to making data more meaningful and useful. Imagine the possibilities for efficiency when all of your information is available in one single location and all working together. This may sound like a costly endeavor, but the return on investment will be well worth it. According to a study by the University of Texas in Austin on Fortune 1000 companies, a 10% increase in data usability could increase a company’s revenue by over $2 billion. (2) 

    Suggestions for using technology to make data more meaningful:

    Enterprise Resource Planning (ERP) Integrations

    As the hub that ties all other administrative applications of an organization together, an ERP system is usually the most massive piece of software in an organization. The system includes modules for every facet of the business – finance, accounting, customer management, human resources, manufacturing, inventory management. Most organizations cannot afford to operate without the automation, integration, and efficiencies an ERP delivers. 

    Having a way to get information out of an ERP into other systems for specific reporting or usage is critical in today’s IT environment. Leaving data locked away in an ERP system may be slowing you down.

    Having an application in place to automate these ETL functions of your business should only be the beginning. The real magic comes when you have meaningful data pipelines to get the information to the right departments, clients, or executives at the right time and in the format they need it.

    Better Integration with your SaaS, Custom, and Third-Party Apps 

    Successful organizations leverage many different systems to achieve results — ERP, CRM, eCommerce platforms, accounting, analytics, marketing automation, channel/marketplace integrations, warehouse, fulfillment, and more. Most modern applications are built leveraging API’s. These API’s are the gateway to integrating systems and more importantly their underlying data. For software without an API custom software and services may be able to unlock that data and get it into the hands of the right people. 

    The takeaway – the cost of increasing data effectiveness is relatively minor compared to the resulting substantial returns. 

    —-

    At Atlantic BT we have over two decades of experience building software and integrating software to work more efficiently together. Not every source of data or software application “plays nice.” That won’t stop us. We can build unique ways to harvest and integrate data, even if it’s not easy. We love a good challenge. What’cha got?

  • What should a software development contract look like?

    What should a software development contract look like?

    The reason to start any relationship or partnership with a formal agreement is to create a backstop, ensuring all legal expectations are covered and compliance needs are met. A software development contract provides transparency and protection for businesses and their development partners.

    Plainly defined terms should keep a project moving forwards and align expectations between both parties. In the worst case scenario, you may need to refer to the contract to prevent a disagreement from becoming an expensive lawsuit.

    What’s included in a software development agreement?

    As we discussed above, it’s important to make sure there is a sufficient legal backstop should things not work out with a vendor. But this is a rare use case. At Atlantic BT, we primarily use contracts for setting expectations. 

    Some elements you should expect in a contract include:

    • Governing legal jurisdiction
    • Separation or termination terms and costs
    • Ownership of the code
    • Definitions of acceptance 
    • Authorizations for points of contact

    If any of these baseline elements are missing from a contract, you may want to find a new software development partner. You risk finding yourself exposed to legal challenges of code ownership, expensive or combative separations, or having to litigate in a different state than where you are incorporated.  

    What are some examples of red flags?

    The most obvious red flag for a software development partnership would be the lack of a formal agreement. Some developers are not sophisticated enough to hire lawyers to generate professional and legally binding contracts. Without a contract, you are opening your business up to unnecessary risk of employee solicitation, customer solicitation, unfair billing practices, or liabilities for licensing/payments that are unexpected. 

    Another common issue would be businesses hiring offshore developers or third-party contractors without transparency. Look out for language around including subcontractors without approval or awareness. Some “software development agencies” may not actually have software developers on staff at all. If they’re hiding this fact, there’s a chance the outsourced development is low cost and low quality.

    Also be wary of hidden licensing and termination clauses. Make sure you know what you own at the end of the agreement and how costly it may be to get out of it. 

    Finally, find out how code is deemed “acceptable” for a project. Software development companies should have formal acceptance procedures which outline standards for quality, security, and user experience. 

    What can you expect from an Atlantic BT software contract?

    As a software development company, our primary goal with our client contracts is to be flexible and create language that both sides deem fair and balanced. This is the basis for delivering quality software that you can own and can be proud of.

    We are even flexible to use your contract as a starting point and refine until we are comfortable with the language and terms. 

    Here’s our process for starting partnerships.

    NDAs protect intellectual property.

    Engagements begin with a straight forward mutual non-disclosure agreement (mNDA). Now, both parties are protected from disclosure of intellectual property and trade secrets. 

    A Master Services Agreement defines legal parameters.

    We then move into the Master Services Agreement that helps define the legal jurisdiction and other parameters that help govern the partnership. This includes items like flexible payment terms, acceptance, warranties, liability, terms and termination, intellectual property rights and exclusions, third party software, non-solicitation, indemnification, and the other legal essentials.

    Statements of Work and Retainers govern development.

    There are then two types of contracts that govern the actual development work: Statements of Work and Retainers. 

    Statements of Work outline defined projects.

    For Statements of Work, we work in a decent mix of planning and agility. While the project is defined, we know businesses have shifting priorities over time. Statements of Work can be augmented during the project lifecycle with change orders and email approvals.  

    Retainer Agreements handle shifting needs.

    We create Retainer agreements in one of these scenarios:

    •  There is a need for staff augmentation
    • There are many shifting initiatives that are not clearly defined 

    Retainers have defined budgets, roll over hours, and flexibility to grow and shrink with some notice. 

    Ready to start a software development project?

    Finding an agency that is trustworthy and transparent in their contracts is the first step towards building a partnership. If you have any questions about our process, we’re happy to talk.

  • Streamline Web Design, Content, and Development with PDDs.

    Streamline Web Design, Content, and Development with PDDs.

    What are PDDs and what is their purpose in web design?

    PDD stands for Page Description Diagram. It’s used to outline the content and elements on web pages and can improve the overall web design process. The elements are organized into low, medium, and high priority. 

    Showing wireframes too early on can trigger premature discussions around layout and design, no matter how bare-bones the wireframes appear. PDDs offer a solution. They come before wireframes to keep the focus on  taxonomies, functionality, and prioritization. After all, web design should support desired content – not the other way around.

    Outlining PDDs can also make the wireframing process much faster since everything is already outlined for the UX designer. 

    In special cases, it is even possible to skip the wireframes and hand PDDs straight to the designer. The drawback is that skipping the wireframes may inadvertently skip the UX designer’s interpretation of layout, flow, and interactions with the user in mind. 

    What does a PDD look like?

    PDD’s can be created in several different ways, from a simple Google Doc list to a Sketch or Figma file with basic graphic elements. Atlantic BT prefers to use Trello, a kanban style list application, because it is easy to move elements around and collaborate with our clients.

    No matter the tool, each list will represent a single page or type of page. Individual cards or bullet points within the list represent a component on the page. 

    Trello allows for tagging cards, which we use to identify the type of content of each card (call to action, metadata, search field, etc). Furthermore, the tagging can be used to indicate priority.

    PDDs facilitate web design collaboration.

    Collaborating with clients.

    The ability to easily collaborate with clients is one of the benefits that make PDDs so attractive. Involving stakeholders in the web design process creates a shared sense of ownership and helps develop the list of components in more detail. 

    With Trello, clients can add comments and examples in real time to elicit discussions. Clients are empowered to include feedback from key players in their organization without having to schedule separate Zoom meetings. 

    Collaborating with web developers.

    Making PDD’s available to developers early on is crucial, especially on website redesigns. Developers want to get a head start on migrating the content from the old website. 

    If it’s difficult for developers to translate a PDD to backend fields, it is important to agree on terminology to identify key elements. 

    For example, we collaborated with our development team to create a spreadsheet that contained what they needed for migration, most of which were copied straight from the PDDs. 

    Avoid common PDD pitfalls.

    Don’t be vague with prioritization.

    It may be helpful to develop definitions of high, medium and low prioritizations to stay focused on essential features. An example of these definitions are:

    1. High – These elements are essential to the user’s understanding and functionality of the page. 
    2. Medium – These elements are useful to most user’s understanding and functionality of the page. 
    3. Low –  These elements are nice to have but they do not contribute to the user’s understanding or functionality of the page.

    During a website redesign, make sure that there is discussion around which elements stakeholders want to keep and remove from the original website. This will make handing off to development a lot easier.

    Don’t focus on visual web design.

    It may be tempting to add graphics to the PDDs to show stakeholders what pages might look like from a low-fidelity perspective. However, adding these visuals runs the risk of people getting stuck on the look and feel of the graphics, overshadowing the content. 

    Don’t let the nitty gritty details prevent progress.

    Don’t spend too much time laboring over the details of the PDDs and going back and forth with stakeholders. Once there is enough information to start wireframes, move on. Lest you get stuck in an endless cycle of minutia. 

    Should you always include PDDs in a web design?

    PDDs are a great way to prioritize and collaborate on the essential elements of main pages without getting bogged down by design details. 

    PDDs may also save time by skipping wireframes, avoiding some of the wireframe pitfalls. Inevitably, you’ll also lose the benefits that go with wireframes, so this is typically not recommended. 

    The great thing about PDDs is that you can spend as little time as possible or go into a lot of detail. They can fit comfortably into any system!

    Need help streamlining the web design process?

    Atlantic BT is well-versed in the strategy, UX, and technical aspects of a web design and development. If you need help planning your next web project, reach out for a free consultation.

  • Five questions to ask a potential SEO firm.

    Five questions to ask a potential SEO firm.

    It’s easy for SEO firms to lie to businesses who have little SEO experience in-house. In fact, when you look behind the curtain, many SEO agencies have spammy practices or are a one man shop pretending to be larger.

    That’s why it’s important to ask the right questions when vetting an SEO agency. Better still, learn how to evaluate their answers.

    1. Ask if page 1 rankings are guaranteed.

    If an SEO firm promises rankings or immediate results right from the beginning, it’s a major red flag. For one, it is dishonest to promise something that is beyond their control. Basically, claiming that your site will rank #1 or show up on the first page for a specific keyword is not accurate.

    The reason is that nobody but the major search engines (Google , Yahoo and MSN) control how websites rank in their organic search results. No SEO firm can guarantee results because they have no control over the search engines algorithms.

    It is true that a reputable SEO firm understands what factors go into ranking websites and can help increase search engine visibility, but no quality firm will ever promise rankings. Look for month-to-month contracts, references from existing customers, or portfolio of results.

    2. Ask what is involved in a successful SEO strategy.

    SEO Process

    A legitimate SEO firm is able to explain what goes into a successful SEO strategy in plain English; not some overly technical industry jargon. Every strategy should mention important on-page and off-page optimization, tracking results through website analytics, content development, link building, and continuous tweaking/testing to increase rankings and conversion rates.

    3. Ask when you can expect to see results.

    Setting proper expectations on both ends is key. Any firm that says you will be fully optimized in 2 weeks is lying. A successful SEO campaign is ongoing and always improving.

    The first thing the SEO firm should ask you is what are you goals? Without understanding what you are trying to accomplish, there is no way anyone can give proper expectations. Once your goals are established, the following can be determined: realistic expectations based on the current condition of your website, an understanding of your competition, and how much time/money/resources you can devote towards SEO efforts.

    A quality SEO firm will not necessary be able to say that you will see results in exactly 2 months; however, they should be able to give you a range as to when you will start to see a noticeable increase in traffic and conversions.

    4. Ask how SEO efforts are measured.

    In order to track whether your SEO efforts are successful or not, you need to monitor your website analytics, ranking reporting, and any other type of marketing measurements your company has readily available.

    This is also a question for both teams. You’ll want to let an agency know how you measure success so you can align goals. Then, find out how an agency will track and report on how their efforts contribute to goals.

    5. Ask how often you’ll collaborate on progress and strategy.

    meeting1_full

    Since SEO consists of an initial SEO setup and then ongoing monthly maintenance, it is important that the SEO firm outlines when and how often you will meet to discuss your SEO strategy.

    As the search engine’s algorithms change, your SEO firm will need to get creative, try new strategies, and make adjustments as required. In an effort to have both marketing and SEO strategies running in line, meeting regularly is recommended. It is not uncommon to meet on  a monthly or quarterly basis to talk about your website analytics, conversion goals, and recommendations to improve your SEO.  It is also important to see what the firm has been doing to improve traffic, conversions, etc.

    A good SEO firm knows that they will require the assistance of their client to get them where they need to be. It is a true partnership between client and SEO firm. Because content development is such a big part of SEO, the company should devote some resources for writing articles, blogs, and press releases. Ask the firm how you can help to increase results faster.

    Need help with digital strategy?

    If you need help finding a vendor for ongoing SEO, we’re happy to help you out. Atlantic BT is also happy to perform SEO audits, offer guidance throughout your SEO strategy, and develop a website that supports SEO. Contact us to see how we can help you out.